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,
