Como chamar método de um campo?

1 resposta
gfcittolin

Olá povo do guj!

Eu preciso chamar um método de um campo de uma classe dentro dela mesma, mas não sei como fazer.

Em um método da classe jFrame, eu preciso obter todos os campos que estão declarados nesta classe, para chamar um método destes objetos.

Ex: Classe jFrame, e tem declarados jTables, jLabels, jButtons, … etc. Daí em um método eu vou chamando: jTable1.updateU()I; jButton1.updateUI(); e assim vai. Acho que devo usar reflection, né?

Olhem onde estou:

Class c = this.getClass();
Field[] f = c.getFields();
for (int i = 0; i < f.length; i++){
    //e aí??
}

Muitíssimo Obrigado

P.S. Porque usar reflection se esta classe fui eu que criei? pois ao instanciar esta classe ela cria objetos de acordo certas condições.

1 Resposta

gfcittolin

Bem, pela tentativa e erro, eu Consegui finalmente fazer o que queria, depois de 6 horas de insistência…

Para quem algum dia for utilizar algo assim, aí vai meu código

Class c = this.getClass();
        Field[] f = c.getDeclaredFields();
        for (int i = 0; i < f.length; i++){
            Class cla = f[i].getType();
            Method[] m = cla.getMethods();
            for(int j = 0; j < m.length; j++){
                if (m[j].getName().equals("updateUI")){
                    Object[] o = new Object[0];
                    try {
                        m[j].invoke(f[i].get(this), o);
                    } catch (IllegalArgumentException ex) {
                        ex.printStackTrace();
                    } catch (IllegalAccessException ex) {
                        ex.printStackTrace();
                    } catch (InvocationTargetException ex) {
                        ex.printStackTrace();
                    }
                }
            }
        }
Criado 4 de março de 2007
Ultima resposta 4 de mar. de 2007
Respostas 1
Participantes 1