SwingWorker ein Ergebnis bekommen
Ich habe einen SwingWorker, die nicht einige Berechnungen im hintergrund (diese Maßnahmen liegen in der überschriebenen doInBackground()
- Methode). Also, ich benutze auch die execute()
Methode, um zu beginnen die Berechnungen. Wie kann ich das Ergebnis dieser Berechnungen, wenn Sie fertig sind?
- Einige code!
- Es ist kein code jetzt. Jetzt denke ich darüber, wie eine Verbindung SwingWorker und mein model und view des MVC-Struktur der Anwendung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überschreiben der
done
- Methode - diese Methode wird aufgerufen, wenn die Arbeit abgeschlossen ist. Oracle hat ein umfassendes tutorial hier: Verbessern Sie Anwendung Leistung Mit SwingWorker in Java SE 6Sehen auch andere SO Frage: Wie benutze ich den SwingWorker in Java?
Können Sie anrufen
get
zum abrufen der Ergebnisse aber, wenn die Arbeiter nicht getan, der thread wird blockiert, bis der Arbeiter erfolgt. Das heißt, wenn Sie rufenget
aus der Event-Dispatch-Thread (EDT) Ihre GUI nicht mehr reagiert, wenn der Arbeiter nicht getan. Sie können rufen SieisDone
zu bestimmen, wenn der Arbeitnehmer abgeschlossen hat.Schließlich können Sie fügen Sie eine property change listener benachrichtigt werden, die der Arbeitnehmer Fortschritt, auch wenn es seine Aufgabe beendet hat. Der erste link, den ich gepostet gibt ein Beispiel.
PropertyChangeEvent
zu erkennen intermediate Fortschritt, wenn Sie wollen, dass Ihre Benutzeroberfläche um den Benutzer apprised of progress.SwingWorker
Methode und als solche dokumentiert ist in der API. Hier ist der link zu der Methode in der Java-8-API: docs.oracle.com/javase/8/docs/api/javax/swing/...Können Sie überschreiben
done()
- und/oderprocess()
, wie gezeigt hier und hier.execute()
es, wie gezeigt in den Beispielen.