Form não fecha![RESOLVIDO]

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

É O SEGUINTE

na condição if

if opcao for para sair do programa faça{
System.exit(WIDTH) //Fecha toda a aplicação

}

else{
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

}

Espero ter ajudado