Wie finde ich heraus, ob ein Fenster geöffnet ist?

9

Ich habe ein Problem mit meiner Anwendung, bei der der Benutzer mehr als ein Fenster gleichzeitig öffnet. Und ich habe die dispose () -Methode hinzugefügt, die beim Schließen des Fensters aufgerufen wird. Jetzt sollte ich immer mindestens ein Fenster offen halten, damit sich die Anwendung nicht verbirgt, ohne komplett geschlossen zu sein. Wenn Sie nicht verstehen, lesen Sie das folgende Szenario:

Ich habe Fenster A und Fenster B gleichzeitig geöffnet. Jetzt kann ich entweder Fenster A oder Fenster B schließen, aber nicht beides. Mit anderen Worten, Fenster B sollte nur geschlossen werden, wenn Fenster A geöffnet wird und umgekehrt. Wie mache ich das in Schwung ??

    
Deepak 04.05.2011, 22:34
quelle

3 Antworten

15

Eine einfache Art von windowManger ist nicht wirklich schwierig, alles was Sie brauchen ist

  • WindowListener, der die Spuren des Windows, auf das er hört,
  • speichert
  • ein definierter Ort um die Fenster zu erstellen und den Listener zu registrieren
  • macht das Fenster do-nothing-on-close und macht den Listener für die Entscheidung verantwortlich, ob er schließen soll oder nicht (wird für alle außer dem letzten tun)

Einige Schnipsel:

%Vor%     
kleopatra 04.05.2011, 23:54
quelle
4

Nur ein möglicher Ansatz ...

Erstellen Sie eine Klasse, nennen Sie sie WindowManager , die die Erstellung und das Entfernen von Fenstern verwaltet.

Es könnte beispielsweise die Zählung der derzeit geöffneten Fenster beibehalten und eine Entsorgungsoperation nur dann zulassen, wenn mehr als ein Fenster "aktiv" ist. Andernfalls wird eine Bestätigungsnachricht mit JOptionPane telling angezeigt der Benutzer "Wirklich nahe? Das würde die Anwendung beenden." oder so ähnlich.

Der "schwierige" Teil ist, dass Sie diese Art von Fenster-bezogenen Operationen in WindowManager durchführen müssen, sonst würde alles versauen.

Weiß ich nicht, ob Swing so etwas eingebaut hat, habe ich noch nie ein solches Szenario gesehen.

    
gd1 04.05.2011 22:42
quelle
1

Überprüfen Sie einfach, ob das andere Fenster geöffnet ist, bevor Sie es mit window.isVisible ();

schließen     
Stas Jaro 04.05.2011 23:14
quelle