fechando meu JFrame sem usar o botão Fechar (X) e que encerra o JVM

votos
2

i tem um quadro que instancia outro quadro, mas eu não quero usar o botão Fechar (x) na armação instanciado., então eu criei um botão. como faço para codificar que este botão pode ser usado para fechar o quadro instanciado sem sair do JVM.

Publicado 09/12/2008 em 19:16
fonte usuário
Em outras línguas...                            


6 respostas

votos
5

Ter seu próprio botão de fechar é UI estranho e deve ser evitado.

Para se livrar de um quadro quando o seu próprio botão é clicado você pode apenas fazer:

jFrame.setVisible(false);

ou

jFrame.dispose();

se você quiser se livrar dele completamente.

Em quadros que você não quer sair da JVM no botão fechar sendo clicado especificar:

jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

ou

jFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

Dependendo de qual o comportamento desejado.

Respondeu 10/01/2009 em 09:55
fonte usuário

votos
0

Você poderia tentar o setVisible () ou alienar () funções

Para sua classe principal ...

    public class Main {

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

}

Para a sua primeira classe quadro ...

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 o quadro instanciado ...

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()
        }
    });
}
}
Respondeu 16/06/2014 em 10:53
fonte usuário

votos
0

Concordo com Tom, eu acho que o código que você escreveu:

[framename].setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

EXIT_ON_CLOSE significa que ele irá sair do aplicativo completamente.

Você pode fechar a janela clicando no botão X usando:

[framename].setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Aqui está um código de exemplo:

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);

    }

}
Respondeu 31/01/2014 em 15:16
fonte usuário

votos
0

Você pode usar setVisible(false)a fim de simplesmente esconder o JFrame instanciado a partir de vista

Respondeu 22/10/2013 em 01:52
fonte usuário

votos
0

Usa isto:

jFrame.setUndecorated(true);
jFrame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
Respondeu 16/11/2009 em 16:46
fonte usuário

votos
-1

IM não se im certo, mas você poderia chamar dispose(). O javadoc sugere que você pode reabri-lo embora usando show().

Respondeu 12/07/2013 em 00:05
fonte usuário

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