Abrir una ventana emergente desde JMenuItem-java
Pregunta
Tengo un JMenu
con un JMenuItem
, y al hacer clic sobre este, lo que necesito para abrir una ventana de JFrame
o, en otras palabras, un componente con JButton
dentro, JTextField
, ...
¿Cómo puedo hacer esto?
Solución
Se puede crear la JFrame
de la misma manera que ha creado su JFrame
inicial y llamada
setVisible(true);
en el ActionListener
de su JMenuItem
para que sea visible cuando se hace clic en el menú.
Si usted quiere que sea modal (trama original no se puede acceder a menos que la nueva ventana está cerrada), se puede utilizar un JDialog
lugar, el establecimiento de modal
a true en el constructor, o llamando setModal(true)
.
Otros consejos
Le escribo en respuesta a buena vista de código:
Si utilizo un JFrame Tengo este error: . "Java.lang.IllegalArgumentException: la adición de una ventana a un recipiente"
Esa es mi código en el método 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();
Se está confundiendo "pop-ups" y "ventanas".
Una ventana emergente en general se muestra al hacer clic derecho en algún objeto. El emergente mostrará una lista de acciones que se pueden realizar en ese objeto. Por ejemplo, un campo de texto podría tener "corte", "copiar" y "pegar". Lea la sección del tutorial Swing en " Arranque de una Menú emergente " para más información.
ventanaA se utiliza para mostrar otros componentes Swing en un JFrame o JDialog.
Dado que usted está invocando esta acción desde un elemento de menú Creo que es probable que desee crear y mostrar un JDialog modal, no un JFrame o emergente.
Además, al leer el tutorial, lee el apartado de "Gestores de diseño". El uso de diseños nulos no es la mejor manera de crear un cuadro de diálogo.