Qual método utilizado no ActionEvent pra fechar outro JFrame?

15 respostas
alexandref93

qual método utilizado pra fechar outro JFrame no ActionEvent???

bem, utilizei setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mais acho que to fazendo errado, alguém um método específico??

15 Respostas

discorpio

Boa noite Alexandref93.

Simples.

this.dispose();

Porém mantenha o setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) configurado dentro do Contrutor de seu JFrame.

alexandref93

discorpio:
Boa noite Alexandref93.

Simples.

this.dispose();

Porém mantenha o setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) configurado dentro do Contrutor de seu JFrame.

nesse caso vai fechar apenas um janela, o quero eu realmente quero é o seguinte, eu to no menu principal, ae aperto “Esc”, logo seguida abre uma outra janela perguntando se eu realmente quero sair do programa, com dois JButton, um sim e o outro não, e quando clicar no sim é pra ele fechar o menu principal. e claro jah deixei configurado o setDefaultCloseOperation no menu principal!!!

consegue passar um método nesse sentido???

inc0gnito

Bom, pelo que entendi vc quer que ao apertar esc, venha uma pergunta se o usuario deseja mesmo fecha-la né?

Então, vc pode criar um método que é chamado sempre que a tecla esc for pressionada:

private void confirmaSaida() { int result = JOptionPane.showConfirmDialog(null, "Deseja sair sem salvar?", "Sair", JOptionPane.YES_NO_CANCEL_OPTION); if (result == JOptionPane.YES_OPTION) { this.dispose(); //Se escolher sim, fecha a janela } else { return; //Se ele escolher Não, retorna à tela } }

Vc pode tb chamar esse método quando o usuário pressionar o “X” da janela, porém configure para: setDefaultCloseOperation(JFrame.DO_NOTHING) e chame o método no evento WindowClosing do jFrame.

alexandref93

inc0gnito:
Bom, pelo que entendi vc quer que ao apertar esc, venha uma pergunta se o usuario deseja mesmo fecha-la né?

Então, vc pode criar um método que é chamado sempre que a tecla esc for pressionada:

private void confirmaSaida() { int result = JOptionPane.showConfirmDialog(null, "Deseja sair sem salvar?", "Sair", JOptionPane.YES_NO_CANCEL_OPTION); if (result == JOptionPane.YES_OPTION) { this.dispose(); //Se escolher sim, fecha a janela } else { return; //Se ele escolher Não, retorna à tela } }

Vc pode tb chamar esse método quando o usuário pressionar o “X” da janela, porém configure para: setDefaultCloseOperation(JFrame.DO_NOTHING) e chame o método no evento WindowClosing do jFrame.

bem, não entendi direito o que você disse na última parte, como assim chama o método no evento WindowClosing???

C_Lucas

Pode criar um actionListener e fazer assim

int escolha;
                                Object[] botoes={"sim","não"};
                                escolha=JOptionPane.showOptionDialog
                                        (null,"Deseja fechar este aplicativo?",
                                        "Fechar o aplicativo",JOptionPane.
                                        YES_NO_OPTION,JOptionPane.
                                        QUESTION_MESSAGE,null,botoes,botoes[0]);


                                if(escolha==JOptionPane.YES_OPTION)
                                dispose();

O Objeto que criei só serve para traduzis o botão, e pode trocar o idspose() do final por System.exit(0);.

alexandref93

C. Lucas:
Pode criar um actionListener e fazer assim

int escolha;
                                Object[] botoes={"sim","não"};
                                escolha=JOptionPane.showOptionDialog
                                        (null,"Deseja fechar este aplicativo?",
                                        "Fechar o aplicativo",JOptionPane.
                                        YES_NO_OPTION,JOptionPane.
                                        QUESTION_MESSAGE,null,botoes,botoes[0]);


                                if(escolha==JOptionPane.YES_OPTION)
                                dispose();

O Objeto que criei só serve para traduzis o botão, e pode trocar o idspose() do final por System.exit(0);.

bem, por esse método, eu apenas implemento ele no constructor do JFrame quero fechar correto???

M

No construtor do seu JFrame acrescente:

// não faz nada por padrão, pois iremos controlar isso manualmente:
setDefaulCloseOperation(DO_NOTHING_ON_CLOSE);

// agora:
addWindowListener(new WindowAdapter() {

    public void indowClosing(WindowEvent e) {
        // esse método será chamado quando o usuário clicar no [X]
        // então é aqui que devemos controlar a saída
        // basta fazer uma chamada ao método que você criou
       confirmaSaida();
    }

});

Caso queira mostrar o mesmo quando pressiona-se o ESC, coloque também no construtor:

addKeyListener(new KeyAdapter() {

    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode == KeyEvent.VK_ESCAPE) {
            confirmaSaida();
        }
    }

});
inc0gnito

É só colocar esse código no construtor da sua classe:

setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        addWindowListener(new java.awt.event.WindowAdapter() {
            @Override
            public void windowClosing(java.awt.event.WindowEvent evt) {
                int result = JOptionPane.showConfirmDialog(null, "Deseja sair sem salvar?", "Sair", JOptionPane.YES_NO_CANCEL_OPTION);
                if (result == JOptionPane.YES_OPTION) {
                    dispose();
                } else {
                    return;
                }
            }
        });
alexandref93

blz, vou tentar conforme falaram, dae depois digo se deu certo!!! xD

alexandref93

inc0gnito:
É só colocar esse código no construtor da sua classe:

setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent evt) { int result = JOptionPane.showConfirmDialog(null, "Deseja sair sem salvar?", "Sair", JOptionPane.YES_NO_CANCEL_OPTION); if (result == JOptionPane.YES_OPTION) { dispose(); } else { return; } } });

bem, tentei como vc me sugeriu, só que está encontrando um erro na linha do addWindowListener(new java.awt.event.WindowAdapter() que o IDE tah pedindo para converter o new WindowAdapter para WindowListener, mais mesmo fazendo isso, o erro continua, qual seria o problema???

discorpio

Boa tarde a todos.

Esta linha de comando fecha todo o sistema:

int result = JOptionPane.showConfirmDialog(null, "Deseja sair sem salvar?", "Sair", JOptionPane.YES_NO_CANCEL_OPTION);   
   if (result == JOptionPane.YES_OPTION) {   
       System.exit(0);
   } else {   
       return;   
   }
alexandref93

discorpio:
Boa tarde a todos.

Esta linha de comando fecha todo o sistema:

int result = JOptionPane.showConfirmDialog(null, "Deseja sair sem salvar?", "Sair", JOptionPane.YES_NO_CANCEL_OPTION); if (result == JOptionPane.YES_OPTION) { System.exit(0); } else { return; }

blz, pode ajudar, mais o problema, é que tah indentificando erro na linha do addWindowListener(new java.awt.event.WindowAdapter() xD, eu não sei o que faço ali.

em busca da solução, xD!

inc0gnito

Qual a IDE vc ta usando? Bom, se for NetBeans, escolhe a opção de visualização “Projeto”, ai vai aparecer o desenho do JFrame certo? Então com o botão direito do mouse, clique em cima do JFrame e escolha a opção: Eventos > Window > WindowClosing e adicione o código do Método que já passei la em cima.Então toda vez que esse seu frame for ser fechado, ele vai perguntar se deseja mesmo ser fechado. Mas como disse, pra isso, o frame precisa ta com setDefaultCloseOperation(JFrame.DO_NOTHING).

alexandref93

blz, vou tentar esse!!!

inc0gnito

E ai conseguiu??

Criado 23 de junho de 2010
Ultima resposta 26 de jun. de 2010
Respostas 15
Participantes 5