es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto en Java con Swing, puedes establecer la operación de cierre predeterminada de JFrame a JFrame.EXIT_ON_CLOSE. Luego, puedes agregar un WindowListener al marco para escuchar el evento windowClosing. Al recibir el evento windowClosing, puedes crear un nuevo JFrame y luego utilizar SwingUtilities.invokeLater() para dispose() el actual en el Event Dispatch Thread. Aquí tienes un código de muestra para que comiences:

    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;
    
    public class MainFrame extends JFrame {
    
        public MainFrame() {
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            // Agrega un WindowListener para escuchar el evento windowClosing
            addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    // Crea un nuevo JFrame
                    JFrame newFrame = new JFrame("Nuevo Marco");
    
                    // Establece el tamaño del nuevo JFrame
                    newFrame.setSize(300, 300);
    
                    // Centra el nuevo JFrame en la pantalla
                    newFrame.setLocationRelativeTo(null);
    
                    // Muestra el nuevo JFrame
                    newFrame.setVisible(true);
    
                    // Dispose el JFrame actual en el Event Dispatch Thread
                    SwingUtilities.invokeLater(() -> dispose());
                }
            });
    
            // Establece el tamaño del JFrame
            setSize(300, 300);
    
            // Centra el JFrame en la pantalla
            setLocationRelativeTo(null);
    
            // Muestra el JFrame
            setVisible(true);
        }
    
        public static void main(String[] args) {
            new MainFrame();
        }
    
    }
    

    Este código establece la operación de cierre predeterminada en JFrame.EXIT_ON_CLOSE y luego agrega un WindowListener para escuchar el evento windowClosing. Al recibir el evento windowClosing, crea un nuevo JFrame, lo centra en la pantalla y luego dispose el JFrame actual en el Event Dispatch Thread.

    Puedes modificar este código según tus necesidades cambiando el título del nuevo JFrame, su tamaño y su ubicación.

Comments are closed.