2010-01-17 5 views
6

Désolé pour la question vraiment simple, mais je n'ai pas été en mesure de trouver quelque chose sur le net, probablement parce que je ne connais pas les bons termes à rechercher. Quand vous avez une application de bureau, il y a beaucoup de fenêtres dites enfants: une pour les options, une pour "environ" et ainsi de suite. Comment les faire en Java Swing (avec les outils NetBeans - optionnels)?Java swing "enfants" windows

Jusqu'à présent, je viens de créer un autre JFrame et sur l'événement pertinent ouvert de la même façon que la fonction principale lance, eh bien, JFrame principal. Mais il y a quelque chose qui cloche avec cette méthode: quand je ferme la fenêtre enfant via x dans le coin supérieur droit, tout le programme se termine comme si je fermais la fenêtre principale. C'est probablement parce que NetBeans a généré du code pour x et que je peux le trouver et le changer quelque part ... mais j'ai toujours le sentiment qu'il doit y avoir un moyen plus simple d'ajouter des enfants JFrames (ou JPanels ou quoi que ce soit pour windows enfants) ;)

Répondre

9

... Mais il y a quelque chose de mal avec cette méthode : quand je ferme la fenêtre de l'enfant par l'intermédiaire x dans le coin supérieur droit, tout le programme se termine comme si je fermais la fenêtre principale. ...

Eh bien, je dirais que vous êtes sur la bonne voie. Assurez-vous que vous effectuez les opérations suivantes pour vos cadres enfants:

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

fermer ensuite les fenêtres enfants ne seront pas fermer toute votre application.

HTH! ;-)

3

voulez-vous dire une fenêtre de dialogue (voir How to Make Dialogs) que vous voulez probablement modal pour bloquer l'entrée d'utilisateur à toutes les autres fenêtres du programme (voir An Overview of Dialogs)?

+0

Pas exactement. Je veux dire quelque chose comme la fenêtre Options. C'est à dire. Fenêtre Préférences Firefox. Sauf si elle est appelée fenêtre de dialogue aussi. – Sejanus

1

Allez en mode conception de cadres -> sélectionnez votre cadre -> dans les propriétés, l'option poing. Sélectionnez Dispose on close.

Si vous ne voyez pas les accessoires: Ctrl + Shift + 7 ou Window (in the frame menu) -> Properties

1

Si vous créez des cadres, ils ne sont pas considérés comme des fenêtres enfants. Vous ne pouvez pas définir un propriétaire pour eux comme vous le feriez pour un JDialog. Si vous ne voulez créer un autre JFrame, alors vous devez définir l'opération de fermeture

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

au lieu de

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

L'opération EXIT_ON_CLOSE appellera System.exit (0); qui terminera la JVM. Rappelez-vous simplement que si votre JFrame principal est réglé sur DISPOSE_ON_CLOSE , vous devez vous assurer que toutes vos autres images ont été correctement éliminées, sinon elles ne sortiront pas tant qu'elles ne l'ont pas été.

+0

Merci à vous tous;) Dommage, je ne peux pas accepter officiellement plus d'une réponse, tous ont été utiles :) – Sejanus