Hallo zusammen
In bin jetzt schon einige Tage an einem eigentlich simplen Problem - könnte man meinen – aber ich komme einfach nicht weiter.
Ich habe zwei Java Klassen:
- GUI.java
-Controller.java (hier auch auch die main() Methode.
Die Klasse GUI erstellt die GUI (JFrame). Im JFrame gibt es eine TextArea und einen Button „Start“.
Wenn man den Button „Start“ klickt, läuft ein längerer Job (kann bis 10-20 Minuten laufen) in Controller.java. Dieser Job schreibt Debug/Bearbeitungs-Informationen. Diese möchte ich in real-time in der Text Area darstellen. Dazu habe ich der Klasse GUI eine Methode „UpdateTextArea „ erstellt. Nun klappt das leider nicht. Die TextArea wird erst aktualisiert nachdem der ganze Job in Controller.java beendet ist. Obwohl ich Controller Code oft die Methode „UpdateTextArea“ aufrufe.
Ich vermute das Problem liegt irgendwo an den verschiedenen Threads bzw. habe ich es auch schon mit SwingUtilities.invokeAndWait versucht – leider ohne Erfolg.
Wie kann ich dieses Problem lösen?
Der Ablauf ist folgendermassen:
1. Die Klasse Controller beinhaltet die main() Methode
2. Hier erstelle ich ein Objekt MyGUI der Klasse GUI. Dem Konstruktur der GUI Klasse übergebe ich das Controller Objekt MyController.
3. Wenn man dann im GUI auf den Button <start> klickt wird die Methode MyController.StartJob() aufgerufen – diese führt den Job aus.
4. Innerhalb von StartJob() rufe ich dann die Methode gui.UpdateTextArea() auf. Jedoch wird der Update eben viel zu spät ausgeführt.
Danke für eure Hilfe!
Gruss
Alen
In bin jetzt schon einige Tage an einem eigentlich simplen Problem - könnte man meinen – aber ich komme einfach nicht weiter.
Ich habe zwei Java Klassen:
- GUI.java
-Controller.java (hier auch auch die main() Methode.
Die Klasse GUI erstellt die GUI (JFrame). Im JFrame gibt es eine TextArea und einen Button „Start“.
Wenn man den Button „Start“ klickt, läuft ein längerer Job (kann bis 10-20 Minuten laufen) in Controller.java. Dieser Job schreibt Debug/Bearbeitungs-Informationen. Diese möchte ich in real-time in der Text Area darstellen. Dazu habe ich der Klasse GUI eine Methode „UpdateTextArea „ erstellt. Nun klappt das leider nicht. Die TextArea wird erst aktualisiert nachdem der ganze Job in Controller.java beendet ist. Obwohl ich Controller Code oft die Methode „UpdateTextArea“ aufrufe.
Ich vermute das Problem liegt irgendwo an den verschiedenen Threads bzw. habe ich es auch schon mit SwingUtilities.invokeAndWait versucht – leider ohne Erfolg.
Wie kann ich dieses Problem lösen?
Der Ablauf ist folgendermassen:
1. Die Klasse Controller beinhaltet die main() Methode
2. Hier erstelle ich ein Objekt MyGUI der Klasse GUI. Dem Konstruktur der GUI Klasse übergebe ich das Controller Objekt MyController.
3. Wenn man dann im GUI auf den Button <start> klickt wird die Methode MyController.StartJob() aufgerufen – diese führt den Job aus.
4. Innerhalb von StartJob() rufe ich dann die Methode gui.UpdateTextArea() auf. Jedoch wird der Update eben viel zu spät ausgeführt.
Danke für eure Hilfe!
Gruss
Alen