Hallo zusammen
Habe eine kleine SWT-Applikation, die Rechenaufgaben anzeigt, die dann gelöst werden müssen. Dies geschieht dadurch, dass der User die Lösung in ein Textfeld schreibt und dann mit Button bestätigt. Der Listener dieses Buttons blendet die componente aus mit dispose und erstellt eine neue componente mit einer neuen Rechenaufgabe. Das funktioniert alles schon mal prima!
Jetzt möchte ich aber zusätzlich, dass die Aufgabe für 3 Sekunden dargestellt wird, und falls bis dahin der Button nicht gedrückt wurde, das ganze ebenfalls die gleichen Methode wie oben aufruft und automatisch weitergeht zur nächsten Aufgabe.
Habe mir das ganze mit Threads angeschaut, aber kriege keine vernünftige Lösung hin, da ich bisher einfach sobald die Aufgabe dargestellt wurde einen anderen Thread starte, der wartet 3 Sekunden und ruft dann die gleiche Methode auf wie der Button sonst. Aber dann sind irgendwie 2 Threads am laufen. Sobald ich den Button drücke werden 2 Aufgaben dargestell usw.
Hat mir hier irgendjemand einen besseren Ansatz?
Danke
Hier der Codeausschnitt
Habe eine kleine SWT-Applikation, die Rechenaufgaben anzeigt, die dann gelöst werden müssen. Dies geschieht dadurch, dass der User die Lösung in ein Textfeld schreibt und dann mit Button bestätigt. Der Listener dieses Buttons blendet die componente aus mit dispose und erstellt eine neue componente mit einer neuen Rechenaufgabe. Das funktioniert alles schon mal prima!
Jetzt möchte ich aber zusätzlich, dass die Aufgabe für 3 Sekunden dargestellt wird, und falls bis dahin der Button nicht gedrückt wurde, das ganze ebenfalls die gleichen Methode wie oben aufruft und automatisch weitergeht zur nächsten Aufgabe.
Habe mir das ganze mit Threads angeschaut, aber kriege keine vernünftige Lösung hin, da ich bisher einfach sobald die Aufgabe dargestellt wurde einen anderen Thread starte, der wartet 3 Sekunden und ruft dann die gleiche Methode auf wie der Button sonst. Aber dann sind irgendwie 2 Threads am laufen. Sobald ich den Button drücke werden 2 Aufgaben dargestell usw.
Hat mir hier irgendjemand einen besseren Ansatz?
Danke
Hier der Codeausschnitt
Java:
...
display.getActiveShell().layout(); // aufgabe wird dargestellt
getTask(buttonTrue).start(); // starte anderen 3-sek thread
}
public Thread getTask() {
return new Thread() {
Runnable r = new Runnable() {
public void run() {
checkResults(); // hier wird die componente disposed und eine neue erstellt
}
};
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
display.asyncExec(r);
}
};
}