Question

J'ai un JMenu avec un JMenuItem, et quand je clique sur ce point, je dois ouvrir une fenêtre JFrame ou, autrement dit un composant à l'intérieur JButton, JTextField, ...

Comment puis-je faire cela?

Était-ce utile?

La solution

Vous pouvez créer le JFrame de la même manière que vous avez créé votre JFrame initiale et appel

setVisible(true);

dans le ActionListener de votre JMenuItem pour le rendre visible lorsque le menu est cliqué.


Si vous voulez qu'il soit modal (image d'origine ne peut pas être accessible à moins que la nouvelle fenêtre est fermée), vous pouvez utiliser un JDialog à la place, la mise en modal à true dans le constructeur, ou en appelant setModal(true).

Autres conseils

Je vous écris en réponse à une bonne vue de code:

Si j'utilise un JFrame i obtenu cette erreur: "Java.lang.IllegalArgumentException: l'addition d'une fenêtre à un conteneur"

C'est mon code dans la méthode actionPerformed:

PopupFactory factory = PopupFactory.getSharedInstance();
JFrame frame = new JFrame();
frame.setLayout(null);
frame.setBounds(428, 99, 185, 155);

final JButton button = new JButton();
button.setText("Button");
button.setBounds(10, 93, 111, 25);
frame.getContentPane().add(button);

final Popup popup = factory.getPopup(null, frame, 200, 200);
popup.show();

Vous confondez "popups" et "fenêtres".

Une fenêtre est généralement affiché lorsque vous cliquez droit sur un objet. La fenêtre contextuelle affichera une liste des actions qui peuvent être effectuées sur cet objet. Par exemple, un champ de texte pourrait avoir « coupé », « copier » et « coller ». Lisez la section du tutoriel Swing sur « Bringing Up une Menu contextuel » pour plus d'informations.

fenêtre

A est utilisée pour afficher d'autres composants Swing dans un DFrame ou JDialog.

Étant donné que vous invoquez cette action à partir d'un élément de menu, je pense que vous voulez probablement créer et afficher un JDialog modal, pas JFrame ou pop-up.

En outre, lors de la lecture du tutoriel, lisez la section « Utilisation de gestionnaires mise en page ». L'utilisation de mises en page null n'est pas la meilleure façon de créer une boîte de dialogue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top