Öffnen Sie ein Fenster-Popup von JMenuItem java
Frage
Ich habe eine JMenu
mit einem JMenuItem
, und wenn ich auf diese klicken, ich brauche ein JFrame
oder Fenster zu öffnen, mit anderen Worten eine Komponente mit innen JButton
, JTextField
, ...
Wie kann ich das tun?
Lösung
Sie können die JFrame
in der gleichen Art und Weise erstellen Sie Ihren ersten JFrame
erstellt und Anruf
setVisible(true);
in der ActionListener
Ihrer JMenuItem
es sichtbar zu machen, wenn das Menü angeklickt wird.
Wenn Sie es wünschen modal zu sein (Originalrahmen nicht zugegriffen werden kann, wenn das neue Fenster geschlossen ist), können Sie einen JDialog
stattdessen verwenden, modal
auf true im Konstruktor Einstellung oder setModal(true)
aufrufen.
Andere Tipps
schreibe ich in der Antwort für eine gute Code-Ansicht:
Wenn ich einen JFrame ich diese Fehlermeldung bekommen: . "Java.lang.IllegalArgumentException: Hinzufügen eines Fensters in einen Behälter"
Das ist mein Code in actionPerformed Methode:
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();
Sie sind verwirrend "Pop-ups" und "Fenster".
wird ein Popup-Regel angezeigt, wenn Sie nach rechts auf ein Objekt klicken. Das Popup-Fenster wird eine Liste der Aktionen anzuzeigen, die für das Objekt ausgeführt werden können. Zum Beispiel könnte ein Textfeld „cut“ hat, „Kopieren“ und „Einfügen“. Lesen Sie den Abschnitt aus den Swing-Tutorial auf „ Bringing Up einer Das Popup-Menü “für weitere Informationen.
Ein Fenster wird verwendet in einem JFrame oder JDialog andere Swing-Komponenten angezeigt werden.
Da Sie diese Aktion von einem Menüpunkt werden Aufruf Ich glaube, Sie wahrscheinlich eine modale JDialog erstellen möchten und zeigen, kein JFrame oder Popup.
Auch wenn das Tutorial lesen, lesen Sie den Abschnitt „Verwenden von Layout-Managers“. Null-Layout ist nicht der beste Weg, um einen Dialog zu erstellen.