[Java] Window beenden!

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von fragl0r, 2. August 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 2. August 2010
    Window beenden!

    Moin!


    Hab im moment folgendes Problem, das Programm sieht in etwa so aus:


    Code:
    public class handler {
    
    list<fenster> Liste
    
    public handler(){
    
    Liste = new linkedList<fenster>;
    
    }
    
    public void erstelleFenster(){
    
    for(...){ // Diese Schleife erstellt für eine bestimmte Situation entsprechend viele Fenster.
    
    fenster f = new fenster();
    Liste.add(f); // Soll eine Liste mit allen Fenster sein.
    }
    }
    }
    
    public class Fenster extends jWindow{
    
    ...
    
    }
    

    So... jetzt will ich aber in einer bestimmten Situation alle Fenster löschen! Wie stell ich das an? In der Liste halte ich doch alle Fenster... wenn ich aber die Liste cleare passiert nix... die Fenster sind immer noch da!? Ich dachte das Objekte gekillt werden wenn sie von keiner Variable mehr gehalten werden...? Was mach ich da falsch?

    greetz fragl0r
     
  2. 2. August 2010
    AW: Window beenden!

    das stimmt zwar, dass der gc die objekte entfernt wenn keine referenzen mehr drauf zeigen, aber bei fenstern ist das was anderes. denn bei denen hat der window-manager/java-awt/swing trotzdem noch ne referenz drauf (solange sie offen sind).

    lauf doch einfach alle elemente in der liste durch und schließe sie einfach.
     
  3. 2. August 2010
    AW: Window beenden!

    hi,

    wie murdoc schon sagte, stimmt deine Vermutung.
    Dank der Garbage Collection, werden unbenutzte Objekte verworfen.
    Allerdings setzt du normalerweise beim Konstruktor des JWindow ein JFrame als owner
    d.h. das besitzende JFrame hat selbst auch eine Liste, mit den windows (im grunde könnteste dir wahrscheinlich die selbst geführte Liste sparen)
    Ich habe noch nicht mit JWindow gearbeitet, aber eben mal kurz geschaut
    Wenn du deine Liste gelöscht hast, versuch noch folgendes danach:
    Wobei f dein JFrame sein sollte.
    Code:
    for (Window w:f.getOwnedWindows()) {
     w.dispose();
    }
    
    Das hat bei mir wunderbar geklappt.
    Und wie gesagt. mit getOnwedWindows bekommst du ein Array der JWindows, die zu dem Frame gehören.
     
  4. 2. August 2010
    AW: Window beenden!

    aso... das erklärt einiges

    Danke habs hinbekommen!
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.