Sobrescrevendo metodo windowClosing

Olá… estou tentando modificar um aplicativo java porem nao está dando certo
ele é um aplicativo de área de trabalho Java que o java inicia automaticamente com o seu API

public class minhaClasse extends FrameView {

    public minhaClasse(SingleFrameApplication app) {
        super(app);

        initComponents();

        this.getFrame().setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        //getFrame().setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // outro jeito que tentei impedir que a janela fechasse
        getFrame().addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent we) {
                //exitX();
                //getFrame().setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // outra tentativa de fazer a janela nao fechar manualmente
                int answer = JOptionPane.showConfirmDialog(null, "Deseja Fechar o Programa?", null, JOptionPane.YES_NO_OPTION);
                if (answer == JOptionPane.YES_OPTION) {
                exitX();
                return;
                } else {

                return;
                }
                System.exit(0);
                
            }
        });

    }
//Desaloca o usuario e finaliza a aplicação
    //caso nao haja usuario logado simplismente o fecha

    private void exitX() {
        if (this.usuarioLogado != null) {
            new Login().doLogoff(this.usuarioLogado);
            this.getFrame().dispose();
        } else {
            this.getFrame().dispose();
        }
    }
}

o que preciso fazer é o seguinte: quando clicar no X aparecerá a msg se quer fechar ou nao, se sim entao fecha e desaloca o usuario logado.
se clicar em nao, nada acontece e volta ao programa normalmente, o que nao está acontecendo, mesmo clicando em nao ele finaliza o programa mas sem deslocar o usuario.

agradeço desde ja

Oi,

Retire o System.exit(0) daquele lugar… Ou então coloque dentro do IF YES …

Tchauzin!

tentei

if (answer == JOptionPane.YES_OPTION) { System.out.println("teste sim"); exitX(); //return; } else { System.out.println("teste nao"); //return; }

mesmo assim continua o mesmo

^^

Oi,

FrameView é um JFrame ?

[code]setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

	addWindowListener(new WindowAdapter() {
	            @Override
	            public void windowClosing(WindowEvent we) {
	                int answer = JOptionPane.showConfirmDialog(null, "Deseja Fechar o Programa?", null, JOptionPane.YES_NO_OPTION);
	                if (answer == JOptionPane.YES_OPTION) {
	                	 exitX();
	                }
	            }
	        });

private void exitX() {
if (this.usuarioLogado != null) {
new Login().doLogoff(this.usuarioLogado);
this.getFrame().dispose();
}
}
[/code]

Tchauzin!

[quote=lina]Oi,

FrameView é um JFrame ?

[code]setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

	addWindowListener(new WindowAdapter() {
	            @Override
	            public void windowClosing(WindowEvent we) {
	                int answer = JOptionPane.showConfirmDialog(null, "Deseja Fechar o Programa?", null, JOptionPane.YES_NO_OPTION);
	                if (answer == JOptionPane.YES_OPTION) {
	                	 exitX();
	                }
	            }
	        });

private void exitX() {
if (this.usuarioLogado != null) {
new Login().doLogoff(this.usuarioLogado);
this.getFrame().dispose();
}
}
[/code]

Tchauzin![/quote]

sim, FrameView é um JFrame criado automaticamente pelo API do NetBeans, ele cria 3 de uma vez, a classe DesktopApplication.java (com o metodo principal) DesktopApplicationAboutBox.java (que é um frame só para informações) e DestopApplicationView.java que é onde tudo acontece

nele nao consigo modificar o initComponents(){…} nem algumas outras declaração de variaveis

no JFrame normal é so colocar setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
para nao fazer nada quando clicar no X
ja no FrameView tem que ser getFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
senao da erro, porem mesmo assim nao esta funcionando

ta complicado aqui. xD

Tópico movido para o fórum de interface gráfica.