Swing JFrame

Hi

Ich habe da ne Frage und zwar wie lautet denn der Befehl mit dem man ein JFrame-Window unloaden kann, einfach schließen. "System.exit(..)" is blöd, da sich damit das komplette Programm schließt.
Es ist nämlich so, dass ich ein Java-Prog geschrieben habe. Jetzt habe ich da ein Main-Window von dem aus weitere Funktionen, d. h. auch weitere JFrames gestartet werden. Ich möchte jetzt auf den JFrames einen Close-Button positionieren, von dem aus der User die Möglichkeit hat das Fenster zu schließen. (Mit dem X am rechten oberen Fensterrand funkts natürlich)


Thnks im Voraus
 
Arbeitest du zusätzlich mit JPanels als "Zwischencontainer" oder hast du deine Objekte (JButton, JTextField,...) direkt auf dem JFrame?
 
Ja, ich geb aus Gewohnheit immer einen JPanel auf das Frame und platziere alle weiteren Steuerelemente darauf!
 
...das geht ja schnell ;-)

@ the Oracle
Ja, ok klingt logisch, was passiert da aber mit dem Classenobject? Das bleibt mir höchstwahrscheinlich erhalten...danke, aber nich so gute Lösung
 
Ich weiß nicht ob das der beste Weg ist, aber ich habs immer so gemacht, daß ich einfach das aktuelle JPanel vom JFrame removt habe (JFrame.getContentPane().removeAll() bzw. JFrame.getContentPane().remove(JPanel).
 
ich bin glaube ich zu dumm für deine frage!
könntest du sie bitte ein wenig genauer formulieren?
mit:

Code:
window.removeAll();
window.dispose();
mit diesen beiden befehlen schmeist du glaube ich zuerst alles vom jframe und dann schliest du es.

für die genauere erläuterung der Befehle empfehle ich dir die Java API
 
@the Oracle
ok...das klingt logisch, werds probieren, danke!
Nein, ich meinte vorhin, dass wenn ich nur die Visible-Eigenschaft auf False setze, mir damit das aus der Klasse erstellte Objekt erhalten bleibt, was meiner Meinung nach nicht so eine gute Idee ist (kann mich aber natürlich auch täuschen!)

Danke!
 
das ist ja das schöne an Java!
mit dispose bleibt es auch erhalten, doch der nette garbage collector räumt sauber hinter uns auf :]

mfg
 
Swing heißt:

=> Objekte initialisieren => Objekt-Eigenschaften anpassen => Objekt sichtbar machen => Programm startet

Während der Laufzeit wird mit der Funktion: setVisible(); Objekt-Eigenschaften Implementiert. Diese werden durch "false => true" immer wieder erneut Deaktiviert oder, mit den Standart-Objekt-Eigenschaften, neu Implementiert.

Es ist also die gebräuchlichste Methode. Da ja so und so die Daten nach setVisible(true) mit den Standart - Werten geladen werden.
Die Methode ist also nicht mit den C++ "ON_CLOSE" - Befehl zu vergleichen!! Da dort nur das Fenster unsichtbar gemacht wird und Objekt-Eigenschaften die verändert wurden, bestehen bleiben.

mfg
minzel
 
Code:
frame.dispose();


reicht völlig aus.

alle instanzierten Child Objekte des JFrames sowie der JFrame selber werden dann beim nächsten Anlauf des Garbage Collectors, der von alleine angestoßen wird, automatisch aus dem Speicher entfernt.

Am besten öffnest Du den neuen JFrame aber nur durch new KlassenName(); und deklarierst ihn vorher am besten nicht. So kannst Du sicher gehen das keine Referenzen auf den zerstörten JFrame erhalten bleiben.
 
Zurück
Oben