cerrando mi jframe sin usar el botón de cerrar (X) y terminar la JVM

votos
2

Tengo un marco que ejemplifica otro marco, pero no quiero usar el botón Cerrar (x) en el marco instanciado. Así que creé un botón. ¿Cómo puedo codificar que este botón se pueda usar para cerrar el marco instanciado sin salir de JVM?

Publicado el 09/12/2008 a las 19:16
fuente por usuario
En otros idiomas...                            


6 respuestas

votos
5

Tener tu propio botón de cierre es una interfaz de usuario extraña y debes evitarlo.

Para deshacerse de un marco cuando se hace clic en su propio botón, puede hacer lo siguiente:

jFrame.setVisible(false);

o

jFrame.dispose();

si quieres deshacerte de él por completo

En los marcos que no desea salir de la JVM al hacer clic en el botón Cerrar, especifique:

jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

o

jFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

Dependiendo de cuál sea el comportamiento que desee.

Respondida el 10/01/2009 a las 09:55
fuente por usuario

votos
0

Puede probar con el setVisible () o disponer () funciones

Para su clase principal ...

    public class Main {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    //new DemoTryCatch()
    new Frame1();
}

}

Para su primera clase de marco ...

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class Frame1 extends JFrame{
JButton newFrame=new JButton("Frame 2");
public Frame1() {
    // TODO Auto-generated constructor stub
    super("Frame 1");
    add(newFrame);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(300,300);
    newFrame.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
            new Frame2();\\instantiating your new Frame
        }
    });
}
}

Para el marco instancia ...

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class Frame2 extends JFrame{

JButton CloseFrame2=new JButton("CloseFrame2");
public Frame2() {
    // TODO Auto-generated constructor stub
    super("Frame 1");
    add(CloseFrame2);
    setVisible(true);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setSize(300,300);
    CloseFrame2.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            setVisible(false);\\You could also use dispose()
        }
    });
}
}
Respondida el 16/06/2014 a las 10:53
fuente por usuario

votos
0

Estoy de acuerdo con Tom, creo que en el código que escribió:

[framename].setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

EXIT_ON_CLOSE significa que va a salir de la aplicación por completo.

Puede cerrar la ventana haciendo clic en el botón X mediante el uso de:

[framename].setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Aquí es un ejemplo de código:

package answers;

import javax.swing.JFrame;

public class Answers {

    public static void main(String[] args) {

        //frame 1
        JFrame frame1 = new JFrame("this is frame 1");
        frame1.setSize(500, 500);
        frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        frame1.setLocationRelativeTo(null); // ignore this its just to place frame 1 on the center

        //now this is the code for frame2
        //frame 2
        JFrame frame2 = new JFrame("this is frame 2");
        frame2.setSize(500, 500);
        frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        frame1.setVisible(true);
        frame2.setVisible(true);

    }

}
Respondida el 31/01/2014 a las 15:16
fuente por usuario

votos
0

Se podría utilizar setVisible(false)con el fin de simplemente ocultar el JFrame instancia de la vista

Respondida el 22/10/2013 a las 01:52
fuente por usuario

votos
0

Utilizar esta:

jFrame.setUndecorated(true);
jFrame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
Respondida el 16/11/2009 a las 16:46
fuente por usuario

votos
-1

No estoy seguro de si estoy bien, pero se le puede llamar dispose(). El javadoc sugiere puede volver a abrirlo, aunque utilizando show().

Respondida el 12/07/2013 a las 00:05
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more