setDefaultCloseOperation( ? )

Status
Nicht offen für weitere Antworten.

kulturfenster

Bekanntes Mitglied
Liebes Forum,
ich muss eine kleine ÜBung machen, bei der man eine Reihe von Uhren at Runtime öffnen und schliessen können soll (ObserverPattern). Nun hab ich mein Programm soweit, dass es eine beliebige Anzahl an Analogen Uhren (new AnalogClock() ) kreieren kann. Mein Problem ist, dass sich das Programm beendet, sobald ich eine dieser Uhren schliesse.

In der gegebenen AnalogClock-Klasse gibts eine innere Klasse, welche wohl dazu zuständig wäre.
Code:
/**
     * A window listener that detaches the clock from the timer when the window 
     * is being closed.
     */
    private class DetachOnClosingWindowListener extends WindowAdapter {
        public void windowClosing(WindowEvent e) {
            //setDefaultCloseOperation(e.DO_NOTHING_ON_CLOSE);
            
            // Do some cleanup here...
        }
    }
In der API bin ich auf "DO_NOTHING_ON_CLOSE" gestossen. Allerdings hab ich nicht recht herausgefunden, wie ich dies implementieren soll.

AnalogClock() erbt übrigens von JFrame.

hat mir jemand einen Tipp?
 

diggaa1984

Top Contributor
diese eigenschaft kannst du schon im konstruktor von AnalogClock setzen. Wenn die Uhren einfach aufrufbar bleiben sollen, wäre ein HIDE_ON_CLOSE vielleicht ganz günstig.
 

kulturfenster

Bekanntes Mitglied
Code:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
Diese Methoden haben alle den gleichen Effekt auf mein Ührchen: sie lassen das gesamte Programm beenden.

Ziel ist übrigens schon, dass man die Uhren bei Bedarf beendet. Sie sollen also nicht blos minimiert werden.

Falls ich nicht genug Infos bereitgestellt habe, einfach melden!
 

Verjigorm

Top Contributor
Dann machst du was falsch,
DO_NOTHING_ON_CLOSE macht nämlich genau das, was es bedeutet, nämlich erstmal nix :)

Hast du einen Windowlistener implementiert, der zufällig System.exit() oder sowas aufruft?

Ansonsten mehr Code hilft immer
 

kulturfenster

Bekanntes Mitglied
Anmerkung: Diese Konstanten sind im Interface WindowConstants deklariert; nicht in JFrame direkt.

Ebenius
Was bedeutet das für mich genau? Wenn du von Konstanten sprichst, meinst du EXIT_ON_CLOSE, etc, oder?

Dann machst du was falsch,
Stimmt, ich hatte die Methode bei der falschen Uhr getestet, weshalb natürlich immer derselbe Effekt auftrat.

Abgesehen davon, dass ich Ebenius' Tipp noch nicht verstehe, funktioniert nun aber alles! Vielen Dank für die Hilfe!
 

Ebenius

Top Contributor
Was bedeutet das für mich genau? Wenn du von Konstanten sprichst, meinst du EXIT_ON_CLOSE, etc, oder?
Die meine ich, ja. Man kann zwar "JFrame.EXIT_ON_CLOSE" hinschreiben (weil JFrame WindowConstants implementiert), man sollte aber besser "WindowConstants.EXIT_ON_CLOSE" schreiben, weil dann klar ist, wo die Konstante wirklich herkommt. Auch wenn es darüber unterschiedliche Ansichten gibt. :)

Ebenius
 

kulturfenster

Bekanntes Mitglied
ach so, verstehe. Klingt einleuchtend muss ich sagen. In meinem JavaBuch ist es mit JFrame. Mal schauen, ob ich mir das merken kann... :)

so, Thema beendet.

Vielen Dank nochmals allen Beteiligten! :toll:
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben