DarthShader
Erfahrenes Mitglied
Hallo,
ich habe ein JFrame, in dessen ContentPane sich recht viele JButtons befinden (mehr als 50).
Nun muss ich während des Programmablaufes die Beschriftung (Text Eigenschaft) aller Buttons ändern. Dies mache ich bisher in einer normalen Schleife, etwa so:
(Der Code läuft im event dispatching thread von Swing, weil er von innerhalb eines Listener ausgeführt wird).
Das funktioniert natürlich, ist aber sehr "unschön", denn nachdem eine Beschriftung eines Buttons geändert wurde, wird er oder der ganze Frame anscheinend sofort neu gezeichnet. Das führt dazu, dass nicht alle Buttons gleichzeitig die Beschriftung erhalten, sondern man sieht deutlich "einer nach dem anderen".
Im Prinzip stelle ich mir so eine Art flag vor, dass ich setzen kann, damit keine Screen-Updates gemacht werden, und erst nachdem die Schleife durchgelaufen ist wird alles auf einen Streich neu gezeichnet. Oder eine Art DoubleBuffering, im Hintergrund wird es neu gezeichnet und dann auf einmal sichtbar gemacht.
Deshalb meine Frage, wie könnte ich das lösen?
Vielen Dank für Eure Hilfe!
ich habe ein JFrame, in dessen ContentPane sich recht viele JButtons befinden (mehr als 50).
Nun muss ich während des Programmablaufes die Beschriftung (Text Eigenschaft) aller Buttons ändern. Dies mache ich bisher in einer normalen Schleife, etwa so:
Java:
for ( JButton button : buttonList ) {
button.setText( "foo" );
}
(Der Code läuft im event dispatching thread von Swing, weil er von innerhalb eines Listener ausgeführt wird).
Das funktioniert natürlich, ist aber sehr "unschön", denn nachdem eine Beschriftung eines Buttons geändert wurde, wird er oder der ganze Frame anscheinend sofort neu gezeichnet. Das führt dazu, dass nicht alle Buttons gleichzeitig die Beschriftung erhalten, sondern man sieht deutlich "einer nach dem anderen".
Im Prinzip stelle ich mir so eine Art flag vor, dass ich setzen kann, damit keine Screen-Updates gemacht werden, und erst nachdem die Schleife durchgelaufen ist wird alles auf einen Streich neu gezeichnet. Oder eine Art DoubleBuffering, im Hintergrund wird es neu gezeichnet und dann auf einmal sichtbar gemacht.
Deshalb meine Frage, wie könnte ich das lösen?
Vielen Dank für Eure Hilfe!