salir reiniciar otro con como cerrarlo cerrar boton aplicación abrir java swing jframe

otro - como reiniciar un jframe en java sin cerrarlo



¿Cerrar un JFrame sin cerrar otro? (2)

Quiero mostrar dos (o más) JFrames al mismo tiempo.
Cuando cierro uno de ellos (use el botón de cierre predeterminado), los otros marcos aún deberían estar visibles.

¿Cómo puedo hacer eso?


¿Te ayuda?

import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; public class TwoJFrames { public static void main(String[] args) { int nb = 4; if (args != null && args.length > 0) { nb = Integer.parseInt(args[0]); } final int frameCount = nb; SwingUtilities.invokeLater(new Runnable() { public void run() { for (int i = 0; i < frameCount; i++) { JFrame frame = new JFrame("Frame number " + i); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); JPanel p = new JPanel(new BorderLayout()); p.add(new JLabel("Click on the corner to close..."), BorderLayout.CENTER); frame.setContentPane(p); frame.setSize(200, 200); frame.setLocation(100 + 20 * i, 100 + 20 * i); frame.setVisible(true); } } }); } }


Si no desea que su aplicación finalice cuando se cierra un JFrame , use

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)

en lugar de

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

De la documentation :

  • DO_NOTHING_ON_CLOSE (definido en WindowConstants): no hacer nada; requiere que el programa maneje la operación en el método windowClosing de un objeto WindowListener registrado.
  • HIDE_ON_CLOSE (definido en WindowConstants): Oculta automáticamente el marco después de invocar cualquier objeto WindowListener registrado.
  • DISPOSE_ON_CLOSE (definido en WindowConstants): Oculta y elimina automáticamente el cuadro después de invocar cualquier objeto WindowListener registrado.
  • EXIT_ON_CLOSE (definido en JFrame): salga de la aplicación usando el método de salida del sistema. Use esto solo en aplicaciones.

Esta fue mi respuesta antes de que se aclarara la pregunta, aún podría ser útil:

Puede usar setVisible(false) en su JFrame si desea mostrar el mismo marco nuevamente.
De lo contrario, invoque dispose() para eliminar todos los recursos de pantalla nativos .