Classe Interna referindo-se a Classe Externa

2 respostas
Rafael_Afonso

Olá:

Deixem-me demonstrar um caso que encarei hoje:

public class MyPanel extends JPanel {
  // ...

  private JPanel getPanel() {
    return this;
  }

  private class MyAction implements ActionListener {
     void actionPerformed(ActionEvent e) {
      JOptionPane.ShowMessageDialog(getPanel(), "Mensagem");
    }
  }

}

:idea: Minha intenção era que o ShowMessageDialog fizesse referencia ao JPanel.
:arrow: Não poderia escrever JOptionPane.ShowMessageDialog(this, “Mensagem”) pois this ia se refereir a MyAction (que não é descendente de Component) e não a MyPanel.
:arrow: Não poderia escrever JOptionPane.ShowMessageDialog(super, “Mensagem”) pois super ia se refereir a Object (que é a super classe de MyAction) e não a MyPanel.
:? Portanto tive que criar o método getPanel() que simplesmente retorna a própria instancia de MyPanel Para poder usar na classe interna.
:?: A minha dúvida é: Não há um modo melhor de uma classe interna se referir a classe externa?

Grato,

2 Respostas

urubatan

existe sim,
faz um tempo que não mexo com isto, mas tenta o seguinte:
MyPanel.this

Rafael_Afonso

Deu certo. Obrigado. :smiley:

Criado 26 de maio de 2003
Ultima resposta 27 de mai. de 2003
Respostas 2
Participantes 2