Confirm form closure

2

I need to ask if I want to close the window that is open. I made the following form, but in any of the options, it closes. I currently use this event option:

private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
    if (JOptionPane.showConfirmDialog(null, "Você deseja realmente fechar essa janela? Todas mensagens serão perdidas") != JOptionPane.YES_NO_OPTION) 
    {
        this.setVisible(false);
    }
}

This is a second form, I have the main, with the options and I have the second, where I ask if you really want to close. This is a JFrame.

Another detail is that in the message displayed there are 3 options: YES, NO and CANCEL. I just want the two options YES and NO.

    
asked by anonymous 26.03.2015 / 21:08

2 answers

3

Considering that segundo is about a JFrame inside the main JFrame, the certain thing would be:

JFrame segundo = new JFrame();
segundo.setBounds(100, 100, 450, 300);
// No método abaixo, diz que não é para fazer nada ao apertar receber o comando de fechar
segundo.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
segundo.setVisible(true);
//sobrescreve o evento que é acionado quando se tenta fechar o JFrame
segundo.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        super.windowClosing(e);
        //pergunta para o usuário qual é a decisão dele
        if (JOptionPane.showConfirmDialog(
                null, 
                "Você deseja realmente fechar essa janela? "
                        + "Todas mensagens serão perdidas",
                        "Fechar",
                        JOptionPane.YES_NO_OPTION
                ) == JOptionPane.YES_OPTION) {
            //caso deseja fechar, deixa torna invisível
            segundo.setVisible(false);
        }
        //não tem else pois o comportamento normal é DO_NOTHING_ON_CLOSE
    }
});
    
26.03.2015 / 21:19
0

The variable evt must have a cancel property or something of the type. All you have to do is true if the user did not want to close the closing will be canceled and you can hide the form.

    
26.03.2015 / 21:17