Bom dia pessoal,
Alguém saberia me dizer o que estou fazendo errado… tipo coloquei um windowListener na hora que estiver fechando para perguntar se a pessoa quer sair mesmo. Mas tipo o que ocorre eh que se eu clicar no “X” do form ele funciona mas se eu chamar o método de fechamento direto o form não fecha.
private void formWindowClosing(java.awt.event.WindowEvent evt) {
String[] opcao = new String[]{"sim","não"};
int escolha = JOptionPane.showOptionDialog(null, "Deseja realmente sair?", "Sair", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,null, opcao, opcao[0]);
if (escolha > 0)
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
else {
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
Mas tipo se eu fizer isto:
public void sair() {
formWindowClosing(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
}
Ele chama o método, aparece a confirmação de saida mas se clica em sim o form continua aberto!
Porque o form não fecha se fizer essa chamada?!
Faltou colocar o dispose!
private void formWindowClosing(java.awt.event.WindowEvent evt) {
String[] opcao = new String[]{"sim","não"};
int escolha = JOptionPane.showOptionDialog(null, "Deseja realmente sair?", "Sair", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,null, opcao, opcao[0]);
if (escolha > 0)
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
else {
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.dispose();
}
}