Dúvidas sobre classes anónimas

Pessoal a minha dúvida é um pouco confusa mas espero que compreendam. É assim, eu quero saber como me posso referir a uma instância de uma classe anónima já que no momento da declaração da classe anónima é retornada uma instância dessa classe…quero saber se existe maneira de pegar nessa instância para fazer algo.

Tipo algo assim:


JFrame janela = new JFrame();
janela.getContentPane().add(new JLabel("Label")); //cá está new(JLabel())
janela.getContentPane().add(botao);
botao.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
???.setText("Changed"); //isto era para mudar o texto da JLabel criada.
}
});

O código está muito incompleto mas penso que é suficiente para expor a minha dúvida… se não entenderam eu posso colocar o código que está a gerar essas dificuldades. Obrigado desde já

Tem como siim

boa tarde Sr fabio, tb não sei se entendi exatamente seu problema. Mas tenho duas soluções. A 1º deixará seu cógigo mais claro, e a segunda usaremos o recurso de POG (Programação orientada a gambiarras).
1° -
Ao invés de declarar diretamete isto:

janela.getContentPane().add(new JLabel("Label")); 

Declare uma variável que faça referência ao JLabel:

JLabel etiqueta = new JLabel("Nome que quiser");
janela.getContentPane().add(etiqueta);//depois se vc quiser alterar etiqueta use a referencia instanciada
//ex: etiqueta.setText("novo nome"); 

2º - Opção, inserindo a gambiarra:

public void mouseClicked(MouseEvent e) {
 JLabel etiqueta = (JLabel) janela.getContentPane().getComponent(0); //supondo que a etiqueta tenha o ínice zero para o componente.
 etiqueta.setText("Changed"); //isto era para mudar o texto da JLabel criada.
 }

espero ter ajudado…

Obrigado, está a ajudar bastante. Eu queria era mesmo evitar definir uma variável. A segunda opção é que me interessa portanto. Mas como é que vou saber qual é o índice do JLabel? É por ordem de declaração?

Eu não vi completamente seu código, mas vc terá que checar a ordem que cada componete foi inserido, ou seja, o 1º que foi inserido tem índice 0, o 2º índice 1, e assim por diante.

Exactamente, muito obrigado pela ajuda :slight_smile: