Frage

Ich entwickle Swing-Anwendung, und alles funktioniert in der Regel gut. Aber ich habe ein GUI Thema.

Wenn ich die Anwendung ausführen, und zum Beispiel minimieren einige andere Fenster, meine Anwendung noch arbeiten, aber der zentrale Teil des JFrame ist unsichtbar oder verborgen. Nach Abschluss der GUI neu zeichnet einen Teil der Programmlogik und ist wieder sichtbar. Dies wird fortgesetzt, bis das Programm ausgeführt wird beendet.

Gibt es eine API für dieses Verhalten zu verhindern oder einige Klassen zu zwingen, die GUI sichtbar, oder vielleicht einige Fortschritte Leiste hinzufügen?

Wenn jemand benötigt diese Informationen ich dies Testen auf Windows Vista, mit Java 1.6.

War es hilfreich?

Lösung

Es klingt für mich wie Sie irgendeine Art von langsamer IO oder Berechnungen zu tun, dass Ihre GUI verursachen nicht mehr reagiert.

Was Sie tun müssen, um die langen laufenden Prozesse in einem anderen Thread zu tun.

Der üblicher Weg, dies zu tun ist mit einem SwingWorker Klasse.

Die Java-Tutorials einige große Ressourcen und Tutorials auf wie man richtig die SwingWorker verwenden.

Hier und here ist ein Link auf eine andere Frage, die ich glauben kann ähnlich sein.

Dieses Verhalten Sie sehen, ist das Ergebnis Ihres langen laufenden Prozesses den Thread blockiert, dass die GUI selbst neu zu zeichnen verwendet. Während also Ihre Aufgabe ausführt, die GUI ist nicht in der Lage Ihre JFrame neu zu zeichnen und es reagiert nicht mehr.

Andere Tipps

Wie jinguy sagt, Sie sind am ehesten eine Aufgabe zu tun, die eine lange Zeit braucht, in Anspruch nimmt und in einem Hintergrund-Thread gestellt werden. Werfen Sie einen Blick auf die Java Sun Concurrency in Swing Tutorial für weitere Informationen darüber, wie diese richtig zu tun.

Es scheint, Sie benötigen eine lange laufenden Geschäftsbetrieb in einem separaten Thread ausführen. Ich schlage vor, Sie verwenden ein SwingWorker .

Überprüfen Sie diese einfache Beispiel rel="nofollow.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top