Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Kann man in Java irgendwie abfragen, was alles für Fenster offen sind, bzw. die Objekte bekommen, um mit ihnen was zu machen oder muss man beim Öffnen diese immer sicher als Referenz abspeichern?
Wenn ein Fenster geschlossen wird, wieso entfernt es dann nicht der Garbage-Collector? Über JWindow.getWindows(); bekomme ich nämlich Fenster, die eigentlich gar nicht mehr existieren.
Deshalb weißt du trotzdem noch nicht, ob es disposed oder einfach nur unsichtbar gesetzt wurde . Was hast du denn bei deinen JFrames (davon gehe ich jetzt einfach mal aus) als DefaultCloseOperation gesetzt? Das muss ich wissen. Bzw. alternativ: Was macht der WindowListener, wenn du auf das "Schließen-X" klickst.
Da war nichts gesetzt. Jetzt habe ich mal setDefaultCloseOperation(DISPOSE_ON_CLOSE); gesetzt. Das zeigt aber keinen Unterschied, es scheint trotzdem noch zu existieren.
Scheint, als wäre dann diese Methode nicht das Richtige für dich.
Api Doc hat gesagt.:
Returns an array of all Windows, both owned and ownerless, created by this application. If called from an applet, the array includes only the Windows accessible by that applet.
Ich denke doch dass auch Fenster-Objekte mal entsorgt werden. Aber beim Garbage Collector weiß man nie genau, wann er seine Arbeit tut. Also darauf kannst du dich nicht verlassen.
Aber wenn ein Fenster via
Code:
dispose()
gesäubert wurde, ist es laut Doku erstmal nicht mehr anzeigbar, sprich
Code:
isDisplayable()
sollte false liefern.
Ansonsten musst du wohl deine eigene Fensterklasse ableiten und dort über ein Flag kennzeichnen, ob es bereits angezeigt und geschlossen wurde und dann beim Iterieren über
Code:
getWindows()
darauf prüfen... oder du machst gleich deine eigene Liste die deine Fenster verwaltet Aber da würde ich den
Naja, ist ja schon eine eigene Klasse, die von JFrame erbt. Aber ich brauche sowieso nur die Fenster, die angezeigt werden und das kann ja ja für jedes Element des Arrays überprüfen.