Como fazer referência a um JFrame

Olá forum,

Bom, tenho uma classe que extende a JFrame, e dentro desta classe tenho fazer referencia ao JFrame extendido(em um FileChooser), ate ai tudo bem, referencio com o “this”, mais eu tenho fazer essa referencia dentro de um listener, com o “this”, ele passa a referenciar o listener, e da erro.

Obrigado.

Eu sei que dentro de classes anonimas você pode usar NomeDaClasse.this, assim:

public class MyFrame extends JFrame {

   public int myVar;
   ...
   aButton.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
       MyFrame.this.myVar = 0;
     }
   });
}

Note que no código acima vc poderia referenciar diretamente myVar. 95% das vezes, vc var precisar de MyFrame.this quando this for parâmetro de algum método.

Mesmo nesses casos, recomendo fazer o contrário: crie um método no MyFrame que faz o que vc quer fazer e chame esse método no código anônimo, assim:

public class MyFrame extends JFrame {

   xButton.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
       doX((MyListener) evt.getSource());
     }
   });

   ...
   public void doX(MyListener listener) {
      listener.someMethod(this);
   }
}

Uma grande vantagem é poder fazer subclasses de um (MyFrame) e de outro (MyLystener) e reaproveitar a maioria do código.

Mas é mais uma questão de gosto, também…

boa sorte!

Deu certo…

Obrigado