S
Spacerat
Gast
Hallo Comunity
Es geht um Folgendes:
Für den Versuch, zwei JPanels (der obere davon ist grösstenteils transparent) übereinander zu legen verwende ich eine JLayeredPane (Versuche mit JRootPane scheiterten, weil ich es nicht hinbekomme, der GlassPane einen LayoutManager zu übergeben). Eine JLayeredPane lässt sich afaik am besten ohne LayoutManager verwenden, denn wenn man einen verwendet, ist' mit dem Überlagern von Komponenten vorbei. Null-Layout bedeutet, dass man die einzelnen Komponenten selbst platzieren und deren Grösse bestimmen darf (äh muss). Da sich die beiden JPanels 100%ig abdecken sollen hielt ich es für eine gute Idee, "reshape(x, y, w, h)" der JLayeredPane zu überschreiben. Okay, die ist @Deprecated, aber alles was Position und Ausdehnung einer Komponente angeht, kommt an dieser Methode nicht vorbei. Zumindest ist das für meine Zwecke (eigentlich) völlig ausreichend und viel bequemer, als einen ComponentListener (oder zwei) zu implementieren.
Wider Erwarten, funktioniert das aber leider nicht (es wird nur eine graue Fläche angezeigt, weder Inhalt der Content- noch der GlassPane), wohingegen
recht gut funktioniert, die GlassPane nur leider ein wenig zu klein ist. Woran kann das liegen?
BTW.: Google ist in Sachen LayeredPane zwar recht aufschlussreich, aber gerade über dieses "Phänomen" kann ich nichts finden.
Es geht um Folgendes:
Für den Versuch, zwei JPanels (der obere davon ist grösstenteils transparent) übereinander zu legen verwende ich eine JLayeredPane (Versuche mit JRootPane scheiterten, weil ich es nicht hinbekomme, der GlassPane einen LayoutManager zu übergeben). Eine JLayeredPane lässt sich afaik am besten ohne LayoutManager verwenden, denn wenn man einen verwendet, ist' mit dem Überlagern von Komponenten vorbei. Null-Layout bedeutet, dass man die einzelnen Komponenten selbst platzieren und deren Grösse bestimmen darf (äh muss). Da sich die beiden JPanels 100%ig abdecken sollen hielt ich es für eine gute Idee, "reshape(x, y, w, h)" der JLayeredPane zu überschreiben. Okay, die ist @Deprecated, aber alles was Position und Ausdehnung einer Komponente angeht, kommt an dieser Methode nicht vorbei. Zumindest ist das für meine Zwecke (eigentlich) völlig ausreichend und viel bequemer, als einen ComponentListener (oder zwei) zu implementieren.
Java:
class MyPanel extends JLayeredPane {
@Override
@Deprecated
public void reshape(int x, int y, int width, int height) {
super.reshape(x, y, width, height);
content.reshape(x, y, width, height);
glass.reshape(x, y, width, height);
}
}
Java:
class MyPanel extends JLayeredPane {
@Override
@Deprecated
public void reshape(int x, int y, int width, int height) {
super.reshape(x, y, width, height);
content.reshape(x, y, width, height);
glass.reshape(x + 1, y + 1, width - 2, height - 2);
}
}
BTW.: Google ist in Sachen LayeredPane zwar recht aufschlussreich, aber gerade über dieses "Phänomen" kann ich nichts finden.