Java GUI repaint () Problem?
-
21-08-2019 - |
Frage
Ich habe einen JFrame. Diese JFrame enthält eine JButton. Ich klicke auf die JButton und 10 JTextFields geschaffen werden.
das Problem: Ich kann sie nicht sehen, bis „ich ein repaint () erzwingen“ durch die Größe des Fensters. Erst dann sehe ich die JTextFields erstellt.
CODE:
JPanel points = new JPanel();
//Creating the JTextFields:
for (int i=0; i<10; i++) {
JTextField textField = new JTextField();
points.add(textField);
}
repaint();
this.repaint();
super.repaint();
points.repaint();
DANKE - nach dem for-Schleife, rief ich points.validate nur () und es hat funktioniert ...
Lösung
Container.add
API-Dokumentation sayeth:
Hinweis: Wenn eine Komponente wurde hinzugefügt, um ein Behälter, der angezeigt wurde, validieren muss, dass aufgerufen werden Behälter der neuen anzuzeigen Komponente. Wenn mehrere Komponenten Sein hinzugefügt haben, können Sie verbessern Effizienz durch Validierung Aufruf nur einmal, nachdem alle Komponenten hinzugefügt.
Es ist dunkel und nicht sehr klug, aber es ist die Regeln. Es kann besser sein JComponent.revalidate
anrufen