Hallo!
Ich hab mal eine Frage zu folgenden Problem: Ich hab ein GUI, auf dem man eine Art Quiz machen kann. Dazu muss man zuerst ein paar Dinge einstellen, dann wird eine Liste mit Fragen generiert und das Quiz startet. Jetzt kann der Benutzer die Frage beantworten und auf OK klicken. Dann soll die nächste Frage aus dem Fragen-Array in das GUI geladen werden.
Den Weg, die Frageliste und einen Zähler global in der Klasse zu definieren und dann beim Klick auf den OK-Button immer eins weiter zu zählen, wollte ich vermeiden. Dann habe ich ja nur unnötige Objekte, wenn das Quiz gar nicht läuft. Da das Programm noch einiges mehr kann, summiert sich das irgendwann.
Stattdessen wollte ich einen Thread erstellen, der die Liste mit Fragen aufnimmt und sich so lange schlafen legt, bis der OK-Button angeklickt wird, die GUI-Aktualisierung ausführt und sich wieder schlafen legt. Mein erster Versuch war der mit
und
, das habe ich aber bald wieder aufgegeben und es mit
und
versucht. Da jetzt aber der Hintergrund-Thread in einer anderen Klasse liegt als das GUI kann ich nicht auf das Condition-Objekt zugreifen, ohne es
zu machen. Da man aber ja keine Instanzen von außen modifizieren soll, bliebe nur der Weg über einen setter, dessen Aufruf von außen den wartenden Thread dann doch aber mit einer InterruptedException abwürgen würde, bevor er
ausführen kann, oder?
Kann mir da jemand einen Lösungsansatz geben?
Ich hab mal eine Frage zu folgenden Problem: Ich hab ein GUI, auf dem man eine Art Quiz machen kann. Dazu muss man zuerst ein paar Dinge einstellen, dann wird eine Liste mit Fragen generiert und das Quiz startet. Jetzt kann der Benutzer die Frage beantworten und auf OK klicken. Dann soll die nächste Frage aus dem Fragen-Array in das GUI geladen werden.
Den Weg, die Frageliste und einen Zähler global in der Klasse zu definieren und dann beim Klick auf den OK-Button immer eins weiter zu zählen, wollte ich vermeiden. Dann habe ich ja nur unnötige Objekte, wenn das Quiz gar nicht läuft. Da das Programm noch einiges mehr kann, summiert sich das irgendwann.
Stattdessen wollte ich einen Thread erstellen, der die Liste mit Fragen aufnimmt und sich so lange schlafen legt, bis der OK-Button angeklickt wird, die GUI-Aktualisierung ausführt und sich wieder schlafen legt. Mein erster Versuch war der mit
Code:
wait()
Code:
notify()
Code:
ReentrantLock
Code:
Condition
Code:
public static
Code:
condition.signal()
Kann mir da jemand einen Lösungsansatz geben?