JButton-Text wird in Schleife nicht geändert

estede

Mitglied
Hallo,
versuche hier testweise einen Jbutton zu bauen, dessen Beschriftung nach dem drücken im Sekundentakt herunterzählt. Aber aus irgendeinem Grund funktoniert das nicht. Help me!

[Java]
import javax.swing.*;
import java.awt.event.*;

public class einfacheGui implements ActionListener {
JButton myButton = new JButton("MyButton");
public void init() {

JFrame myFrame = new JFrame();
myFrame.getContentPane();
myFrame.add(myButton);
myFrame.setSize(300,300);
myFrame.setVisible(true);
myButton.addActionListener(this);
}
public void actionPerformed(ActionEvent ev) {
for(int i = 5; i>0; i--) {
// hier soll der Text im Button geändert werden,
// aber aus irgendeinen Grund funktioniert das nicht
myButton.setText(Integer.toString(i));
try{
// Eine 1-sekündige Pause, damit die Schleife im Sekundentakt zählt
Thread.sleep(1000);
}
catch (Exception e) {
System.out.println("Thread-sleep funzt net");
}
}
// außerhalb der Schleiufe funktioniert 'setText'
myButton.setText("pushed");

}

}
[/Java]

und hier die ausführende Klasse:

[Java]
public class TestMain {
public static void main (String[] args) {
einfacheGui myGui = new einfacheGui();
myGui.init();
}
}
[/Java]

Ich zermartere mir haupstsächlich über Zeile 19 den Kopf, denn alles andere funktioniert. Hab auch schon mal ne System.out.println(i) in die Schleife mit eingebaut. In der Konsole zählt er auch anständig im Sekundentakt runter.
Danke schonmal!
 
Du führst deine Schleife auf dem EDT aus, der wird dadurch blockiert und kann erst nachdem die schleife durchgelaufen ist die änderungen auf der GUI vornehmen.
 
Ok, hier mein outing: Ausser das ich Thread.sleep() nutzen kann habe ich noch keine Ahnun gvon Threads... was ist der EDT??? (ist 'der' denn wenigstens der richtige Artikel??)
 
Der EDT ist der Event Dispatch Thread. Auf dem dürfen keine langen Schleifen oder Berechnungen laufen.
Für deine Schleife in nem eigenen Thread aus, dann erhälst du das gewünschte Ergebnis.
 
OK, dann komme ich nochmal zu diesen Programm wenn ich bei Threads ankomme. Trotzdem schonmal vielen Dank, genauso wie gestern 😉.
 

Neue Themen


Zurück
Oben