T
tuxedo
Gast
Hallo zusammen,
wieder mal eine Design-Frage an die Swing-Experten:
Ich habe eine Anwendung welche wahlweise im Fullscreen, als auch im Fenster läuft. Es gibt keine Dialoge oder sonstiges. Läuft alles in einem Fenster.
Wenn die Anwendung jetzt mit etwss beschäftigt ist (z.B. DB initiell befüllen, Dateien lesen, ...), dann möchte ich über das bestehende UI ein halbtransparentes Panel legen, welches eine Ladeanimation, sowie einen Hinweistext anzeigt.
Das Panel hab ich schon. Die halbtransparenz, sowie die Ladeanimation hab ich auch. Passt alles.
In meinem JFrame arbeite ich mit dem Borderlayout. Die eigentliche Anwendung läuft vollständig in einem eigenen Panel (max. Fenstergröße) und liegt in
. Parallel dazu hab ich nun mein "LoadingPanel", welches ebenfalls im Zentrum des Layout's des Frames liegt:
Soweit so gut.
Wenn das LoadingPanel nicht gebraucht wird, wird es invisible geschalten. Wird es gebraucht, wird es einfach sichtbar gemacht.
Das Problem ist jetzt: Beide Panels liegen an der gleichen Stelle und konkurrieren untereinander. Bewege ich die Maus über einen Button im mainPanel, dann blitzt der Button hervor und überzeichnet das loadingPanel...
Gibt's eine einfache Möglichkeit ein Panel, sowie alle "Child-Components" komplett tot zu stellen, ohne deren eigenen Eigenschaften (focusable/visible/...) nachhaltig zu verändern? Könnte über alle Components des mainPanels iterieren und überall "focusable" etc. abschalten. Aber beim zurückstellen müsste ich mir ja vorher noch gemerkt haben wie der "zuvor" Zustand war um diesen wiederherzustellen. Gibt's nicht was einfaches?
- Alex
wieder mal eine Design-Frage an die Swing-Experten:
Ich habe eine Anwendung welche wahlweise im Fullscreen, als auch im Fenster läuft. Es gibt keine Dialoge oder sonstiges. Läuft alles in einem Fenster.
Wenn die Anwendung jetzt mit etwss beschäftigt ist (z.B. DB initiell befüllen, Dateien lesen, ...), dann möchte ich über das bestehende UI ein halbtransparentes Panel legen, welches eine Ladeanimation, sowie einen Hinweistext anzeigt.
Das Panel hab ich schon. Die halbtransparenz, sowie die Ladeanimation hab ich auch. Passt alles.
In meinem JFrame arbeite ich mit dem Borderlayout. Die eigentliche Anwendung läuft vollständig in einem eigenen Panel (max. Fenstergröße) und liegt in
Code:
Borderlayout.CENTER
Java:
contentPane.setLayout(new BorderLayout());
contentPane.add(loadingPanel, BorderLayout.CENTER);
contentPane.add(mainPanel, BorderLayout.CENTER);
pack();
Soweit so gut.
Wenn das LoadingPanel nicht gebraucht wird, wird es invisible geschalten. Wird es gebraucht, wird es einfach sichtbar gemacht.
Das Problem ist jetzt: Beide Panels liegen an der gleichen Stelle und konkurrieren untereinander. Bewege ich die Maus über einen Button im mainPanel, dann blitzt der Button hervor und überzeichnet das loadingPanel...
Gibt's eine einfache Möglichkeit ein Panel, sowie alle "Child-Components" komplett tot zu stellen, ohne deren eigenen Eigenschaften (focusable/visible/...) nachhaltig zu verändern? Könnte über alle Components des mainPanels iterieren und überall "focusable" etc. abschalten. Aber beim zurückstellen müsste ich mir ja vorher noch gemerkt haben wie der "zuvor" Zustand war um diesen wiederherzustellen. Gibt's nicht was einfaches?
- Alex