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!