Hallo alle zusammen!
Mein Problem ist folgendes: Ich habe ein JPanel, das auf einen JFrame liegt. Das ganze wird geöffnet und enthält dazu noch einen JButton. Nun möchte ich, das wenn der Button gedrückt wurde, sich der Hintergrund nach ein paar Sekunden ändert. Dazu gibt es eine Funktion die
heißt. Sie sieht wie folgt aus:
Die Funktion
ist dabei selbst definiert und macht nicht mehr als
. Um zu warten nutze ich die Funktion
:
Nun passiert folgendes: Nichts. Das heißt, der Thread wird angehalten, das merkt man, da der Button gedrückt bleibt und nicht weiter reagiert, zumindest solange bis die 6 Sekunden um sind. Dann ist das Panel hübsch blau und alles geht wieder. Allerdings passiert dazwischen nichts, zumindest nicht sichtbar. Selbst
oder so etwas funktioniert nicht.
Setzte ich das ganze aber nun in mein Objekt, das über
aufgerufen wird, klappt es wie gewollt:
Ich nehme ja an, dass es etwas mit
currentThread zu tun hat. Wird das Frame aufgebaut, ist klar welcher Thread es ist, aber scheinbar nicht wenn ich nur
aufrufe ... ich kenne mich leider mit Threads nicht so sehr aus. Was kann ich machen, damit das ganze richtig funktioniert? Oder hat jemand eine bessere Idee, wie man das ganze realisieren kann?
MFG Stif
Mein Problem ist folgendes: Ich habe ein JPanel, das auf einen JFrame liegt. Das ganze wird geöffnet und enthält dazu noch einen JButton. Nun möchte ich, das wenn der Button gedrückt wurde, sich der Hintergrund nach ein paar Sekunden ändert. Dazu gibt es eine Funktion die
Code:
start()
Java:
public void start() {
waitFor(2000);
setColor(Color.WHITE);
waitFor(2000);
setColor(Color.RED);
waitFor(2000);
setColor(Color.BLUE);
}
Code:
setColor(Color c)
Code:
Panel.setBackground(Color c)
Code:
waitFor()
Java:
public void waitFor(long milliseconds) {
try {
Thread.currentThread();
Thread.sleep(milliseconds);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Nun passiert folgendes: Nichts. Das heißt, der Thread wird angehalten, das merkt man, da der Button gedrückt bleibt und nicht weiter reagiert, zumindest solange bis die 6 Sekunden um sind. Dann ist das Panel hübsch blau und alles geht wieder. Allerdings passiert dazwischen nichts, zumindest nicht sichtbar. Selbst
Code:
repaint()
Setzte ich das ganze aber nun in mein Objekt, das über
Code:
new MainClass()
Java:
public class MainClass extends JFrame implements ActionListener {
public MainClass() {
...
setVisible(true);
start();
}
}
Ich nehme ja an, dass es etwas mit
Code:
Code:
start()
MFG Stif
Zuletzt bearbeitet: