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?

¿Fue útil?

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.

ventana

A 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top