[RESOLVIDO] Adicionar listener a um JButton com Reflection

Boa tarde, estou tentando add um listener em um JButton via reflexão, mas não consigo.

Estou fazendo da seguinte maneira: carrego a classe pelo nome, percorro seus campos (fields), até encontrar um JButton, ai crio uma nova instancia do JButton para add o listener nele. Não dá certo pelo fato da instância do JButton ser outra.

Segue o código:

[code]package teste;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Field;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;

public class Teste {

public  void testar() {
    String nomeDaClasse = "views.Janela";
    
    try {
        Class classe = Class.forName(nomeDaClasse);
                
        for (Field campo : classe.getDeclaredFields()) {
            campo.setAccessible(true);
            try {
                 ((JButton)campo.getType().newInstance()).addActionListener(new ActionListener() {

                 @Override
                   public void actionPerformed(ActionEvent e) {
                       System.out.println("BOTÂO CLICADO!!!");
                    }
                 });

            } catch (        InstantiationException | IllegalAccessException ex) {
                Logger.getLogger(Teste.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("ERRO");
            }
            
        }
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Teste.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}
[/code]

Quem entender um pouco mais de reflection e puder dar uma luz, agradeço.

Abraços!

Ninguém?

Você está apenas instanciando o JButton. Deveria fazer uma destas duas coisas:

1- Alterar o valor do Field (usando o método set)
2- Instanciar o JButton na própria classe e obter o valor do FIeld (usando o método get) para adicionar o listener

Boa tarde Ataxexe,

Primeiramente muito obrigado por me ajudar!

O método get não espera um object? Então não estaria esperando uma instância?

Abraços.

Exatamente! A instância seria uma instância de “nomeDaClasse”.

O seu maior problema é querer definir comportamento em uma instância sem ter a instância. Não tem como você adicionar um listener a um botão sem ter a instância do botão, e não tem como você ter a instância do botão sem ter a instância da classe (claro, sem consideramos coisas estáticas).

Entendi!

Estou tentando fazer um pequeno framework para desenvolvimento com swing, mas acho que vou estudar um pouco mais a API de reflexão do Java.

Muito obrigado Ataxexe! Forte abraço!