2010-01-17 12 views
6

Sorry für wirklich einfache Frage, aber ich konnte nicht alles im Netz finden, wahrscheinlich, weil ich nicht die richtigen Begriffe zu suchen.Java Swing "Kinder" Windows

Wenn Sie eine Desktop-Anwendung haben, gibt es viele so genannte Kinder-Fenster: eines für Optionen, eines für "etwa" und so weiter. Wie man sie in Java Swing (mit NetBeans-Tools - optional) machen?

Bis jetzt habe ich nur einen anderen JFrame erstellt und auf dem relevanten Ereignis geöffnet es auf die gleiche Weise Hauptfunktion startet, nun, Haupt JFrame. Aber etwas stimmt nicht mit dieser Methode: Wenn ich das untergeordnete Fenster über x in der oberen rechten Ecke schließe, wird das gesamte Programm beendet, als würde ich das Hauptfenster schließen. Dies ist wahrscheinlich, weil NetBeans automatisch Code für x generiert und ich kann es irgendwo finden und ändern ... aber ich habe immer noch das Gefühl, dass es eine einfachere Möglichkeit gibt, Kinder JFrames (oder JPanels oder was auch immer für Kinderfenster) hinzuzufügen. ;)

Antwort

9

... Aber es ist etwas falsch mit dieser Methode: Wenn ich Kind Fenster über x in der oberen rechten Ecke, ganz Programm beendet zu schließen, als ob ich das Hauptfenster geschlossen wurde. ...

Nun, ich würde sagen, Sie sind auf dem richtigen Weg. So stellen Sie sicher, dass Sie die folgenden für Ihr Kind Rahmen tun:

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

Dann werden die Kind Schließen von Fenstern wird Ihre gesamte Anwendung nicht heruntergefahren.

HTH! ;-)

3

Sie ein Dialogfenster, bedeuten Sie (siehe How to Make Dialogs), die Sie wahrscheinlich modal zu blockieren Benutzereingabe zu allen anderen Fenstern im Programm (siehe An Overview of Dialogs) sein?

+0

Nicht genau. Ich meine so etwas wie das Optionsfenster. I.e. Firefox-Einstellungsfenster Es sei denn, es heißt auch ein Dialogfenster. – Sejanus

1

Gehe in den Frame-Design-Modus -> wähle deinen Frame -> in den Eigenschaften die erste Option. Wählen Sie Dispose on close.

Wenn Sie nicht sehen, die Requisiten: Ctrl + Shift + 7 oder Window (in the frame menu) -> Properties

1

Wenn Sie Rahmen erstellen, werden sie nicht als Kinder Fenster. Sie können keinen Eigentümer für sie wie einen JDialog festlegen. Wenn Sie einen anderen JFrame erstellen wollte, dann würden Sie den Schließvorgang

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

statt

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

Die EXIT_ON_CLOSE Betrieb nennen System.exit (0) gesetzt haben; , wodurch die JVM beendet wird. Denken Sie daran, dass wenn Ihr Haupt-JFrame auf DISPOSE_ON_CLOSE eingestellt ist, dann müssen Sie sicherstellen, dass alle anderen Frames ordnungsgemäß entsorgt wurden, andernfalls wird es erst wieder beendet.

+0

Vielen Dank euch allen;) Schade, dass ich nicht mehr als eine Antwort formell annehmen kann, alle waren hilfreich :) – Sejanus