Seltsames Problem mit Resize eines Fensters und seiner Komponenten

  • Themenstarter Themenstarter MichaelB200
  • Beginndatum Beginndatum
M

MichaelB200

Gast
Hallo,

ich bin Swing Einsteiger und habe ein seltsames Resize Problem:
Ich möchte, dass bei einem Resize (Maximieren/Wiederherstellen/mit der Maus ziehen) des Hauptfensters meiner Anwendung (JFrame) die Subkompoenten eines Panels neu angeordnet werden.

Dafür habe ich im JFrame folgenden Listener hinzugefügt:

Java:
addComponentListener(new ComponentListener() {
                       
                       doResize();

            }


Das seltsame daran ist: doResize wird immer ausgeführt, wenn ich das Fenster resize, das Event klappt also. Allerdings wird das Panel nicht immer aktualisiert:
Bei Maximieren/Wiederherstellen wird das Panel nicht neu angezeigt, auch bei sehr schnellem manuellem Ändern der Fenstergröße klappt es nicht.
Nur, wenn ich das Fenster "langsam" mit der Maus in der Größe verändere, klappt der automatische Resize, also das Neuanordnen der Elemente des Panels.

DoResize ordnet Buttons etc im Panel neu an:
Java:
private void doResize() {

//verschiedene buttons neu positionieren
jbtn1.setLocation().... //etc

//am ende
 meinFrame.validate();
 meinFrame.repaint();
            
}

Woran kann das liegen?
 
grundsätzlich sollte man mit Layout-Managern arbeiten.
wenn du mit dem Null-Layout und absoluten Positionen arbeiten willst, solltest du deine Komponenten nicht dem JFrame adden, sondern einem JPanel und das wird dann dem JFrame geaddet. Anschließend rufst du validate() und repaint nur auf das JPanel auf.
 
Also die Komponenten sind in einem JPanel das dem JFrame hinzugefügt wurde.
Auch mit validate und repaint aufs Panel geht es nicht 🙁
 

Neue Themen


Zurück
Oben