Swing Fenster lässt sich nach Schließung nicht wieder öffnen

juandeluca

Mitglied
Hallo!

Mit Swing habe ich mir ein Hauptfenster (also ein ganz normales Fenster/Window) gebaut. Dieses soll als MDI-Container laufen, also weitere Fester beinhalten.

Alles ganz schön soweit. Hauptfenster wird erstellt und über Menü lässt sich auch ein Unterfenster innerhalb des Hauptfenster erstellen. Leider funktioniert das Schließen des Unterfensters nicht ganz. Ich kann es nur einmal schließen, also auf das x oben rechts klicken, aber wieder öffnen kann ich es nicht.

Vorgehensweise:

Ich habe ein JFrame, als Hauptcontainer.
In dieses setze ich ein JMenuBar hinein.
Java:
setJMenuBar(...)
In der JMenuBar habe ich mehrere JMenu.
In den JMenu habe ich JMenuItem, denen ich einen ActionListener mitgebe.
Java:
addActionListener(...)
Der ActionListener, den ich mitgebe, besteht aus einer Klasse mit:
Java:
extends AbstractAction
Die Abstrakte Klasse AbstractAction hat eine Methode actionPerformed(ActionEvent e), die ich überschreibe (@Override), sodass ich mit dieser eine neue Form aufrufen kann, also eine Klasse mit:
Java:
extends JDesktopPane
In dem Konstruktor dieser Klasse, erstelle ich zuerst:
Java:
JInternalFrame inFrame = new JInternalFrame("Maskenname", true, true, true, true);
und gebe diesem ein JDesktopPane. Um es sichtbar zu machen, habe ich
Java:
JInternalFrame.setVisible(true);

Frage:

Was mache ich falsch bei Schließen? Muss ich noch einen Parameter setzen, der beim Schließen den GarbageCollector flasht, oder sowas?
Falls irgendetwas unklar erklärt ist, so bitte ich euch drum, näher nachzufragen.

Vielen Dank im Voraus!
 
Vielen Dank für die schnelle Antwort!

Direkt nach Erstellung der Instanz:
Java:
JInternalFrame inFrame = new JInternalFrame("Maskenname", true, true, true, true);
habe ich eine CloseOperation gesetzt:
Java:
inFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Doch leider bewirkt diese garnichts. Klicke ich auf das X des Fensters, passiert nichts. Das Fenster bleibt.

Für das Dispose habe ich keine Anknüpfmöglichkeit gefunden. Wo soll ich das hinsetzen? Ich greife ja nicht mehr direkt auf das JInteralFrame zu, nachdem ich es erstellt habe. Gibt es eine Möglichkeit ein Close-Event zu erstellen, worin ich dann etwas wie folgt reinsetzen könnte?
Java:
inFrame.dispose()

Vielen Dank!
 

Zurück
Oben