internalFrameClosing nunca é chamado!

4 respostas
saoj

Alguém já conseguiu implementar com sucesso InternalFrameListener ?

Parece que isso é um bug, ou eu não sei que tem que chamar uma função doSomethingCrazy() da classe javax.swing.hacks.crazythings.Hack

4 Respostas

saoj

Que maravilha !!! Pensei que era um BUG do Swing, mas na verdade foi cagada minha !!! Alguém consegue ver o erro ???

addInternalFrameListener(new InternalFrameAdapter() {
            public void internalFrameClosing(WindowEvent evt) {
                int x = Dialogs.showConfirmationMessage("Tem certeza que deseja fechar " + name, "Fechando código...");
                if (x == JOptionPane.OK_OPTION) {
                    JDesktopPane desktop = CodeFrame.this.getDesktopPane();
                    desktop.remove(CodeFrame.this);
                    dispose();
                    desktop.repaint();
                }
            }
        });
T

Aquele exemplo do Java Tutorial funciona com você?

http://java.sun.com/docs/books/tutorial/uiswing/events/internalframelistener.html

T
saoj:
Alguém consegue ver o erro ???
addInternalFrameListener(new InternalFrameAdapter() {
            public void internalFrameClosing(WindowEvent evt) {
...
            }
        });
A assinatura do método está errada.
public void internalFrameClosing(InternalFrameEvent e) {
    }

O compilador não reclamou, porque InternalFrameAdapter já fornece uma implementação vazia de internalFrameClosing(InternalFrameEvent), e você fez um overload (não um override). Isso é muito chato, porque a gente acaba arrancando os cabelos sem ter idéia do que está errado.

Algumas linguagens (nem vou falar o nome delas aqui, para evitar discussão) simplesmente evitam permitir o overload para evitar tais tipos de problemas, ou então forçam que você especifique"overload" na declaração para permitir o overload.

saoj

Só perdi 45 minutos procurando no Google e no Bug Parade !!!

Dei um cut and paste de um windowClosing e esqueci de mudar o evento !!!

Bom, é a vida… :cry:

Criado 26 de novembro de 2004
Ultima resposta 26 de nov. de 2004
Respostas 4
Participantes 2