Modaler JDialog ohne Anhalten des Owners

heut

Grünschnabel
Hallo!

Ich ärger mich gerade gewaltig mit modalen Fenstern rum.
Hintergrund ist folgendes:
In meinem Programm werden zur Laufzeit des öfteren länger dauernde Methoden ausgeführt. Während dieser Zeit möchte ich nicht den Eindruck erwecken, dass sich das Programm aufgehängt hat und darum den aktuellen Status anzeigen lassen - ähnlich wie die Willkommensbildschirme von Word und co.
Natürlich möchte ich auch nicht, dass während diesen Berechnungen der User die Möglichkeit hat, sich doch noch eine andere Funktion auszusuchen - darum sollen die Fenster modal angezeigt werden.

Dazu habe ich mir eine Klasse MessageDialog erstellt, die JDialog erweitert.
Außerdem hab ich den konstruktor so angelegt, dass er über super (parent, modal) für das modale Anzeigen des Fensters sorgt.
Allerdings wird bei setVisible (true) dann auch der Eltern-Prozess angehalten und genau das möchte ich nicht.

In diesem Post gab es den Vorschlag, die setVisible Methode in einem eigenen Thread auszuführen. Das führt bei mir dazu, dass zwar der Hauptprozess weiter läuft, ich aber das Fenster mit dem Status gar nicht sehe.

Der Code dafür sieht dann so aus:
Code:
final MessageDialog W = new MessageDialog (this, true);
W.setMessage("test");
W.setAlwaysOnTop(true);
new Thread () {
    public void run () {
        W.setVisible(true);
    }
}.start();

Kann mir jemand weiter helfen?

Danke schonmal!

Heut
 
Also ich habe eine Klasse gemacht, die von Thread erbt und darin den ganzen Dialog kreiert um etwas ähnliches zu erreichen.

In deinem Biespiel ist der Thread ja abgearbeitet, sobald Du die setVisible-Methode aufgerufen hast. Soweit ich informiert bin stoppt der Thread mit dem verlassen der run()-Methode.

Du könntest in run() also eine Schleife machen, die abfragt, ob deine Prozedur im Hauptfenster terminiert ist. Erst dann, verlässt Du den Thread und killst den Dialog?

Gruss
mas
 
Zurück