Chamar método de JTextField por Reflection

3 respostas
ERVER

Boa tarde pessoal,

Estou tentando pegar o valor armazenado em um JTextField que está numa JFrame, acessando por reflexão em outra classe. Eu sei que temos o método invoke de Reflection.Method, mas pra isso eu preciso carregar a classe da JFrame. Segue o código da classe que usa reflexão:

Class c = Class.forName("MinhaClasse");

Method m = c.getMethod("getText");

Obviamente não funciona, pq é o mesmo que dizer pra executar o método getText da classe MinhaClasse, o qual não existe (eu queria fazer o MeuJTextField.getText() ).

Alguem tem alguma idéia de como resolver isso, mesmo que seja de outra forma, talvez até sem usar reflection. Só não posso usar nada que acople ainda mais as duas classes (coisas do tipo colocar métodos que retornem o valor desse JTextField na outra classe). Tô lendo a documentação da Reflection, pra ver se ajuda.

Mto obrigado desde já.

Grande abraço.

3 Respostas

ERVER

A intenção não é dar up, quero apenas saber se este tópico se encaixaria melhor em “Java Avançado”?
E se a resposta for sim, moderadores podem movê-lo ou tenho que criar ou outro?

Mto obrigado.

E

Suponha que você tem um JDialog que é chamado por um JFrame e que sirva para preencher um formulário. O jeito correto de trabalhar não é, obviamente, ficar pegando os valores dos JTextFields desse JDialog sem que ele saiba, e sim ter um método nesse JDialog que retorne um objeto de uma classe que contém os campos que foram preenchidos (e outro, se o JDialog contém dados que já vêm preenchidos, que recebe um objeto com os valores já preenchidos). Até porque o JDialog pode massagear os campos que foram preenchidos - por exemplo, em vez de você pegar uma String “01/02/2012”, você já pegar um objeto java.sql.Date.

O acoplamento indireto que você quer fazer via reflection é uma bomba de efeito retardado; é melhor indicar um acoplamento explícito e type-safe que fazer essa coisa monstruosa que você quer fazer.

ERVER

Olá entanglement,

Primeiramente, mto obrigado por estar ajudando.
Parece que isso é até gambiarra, então?
O que quero fazer é uma aplicação MVC sem tanto acoplamento entre visão e controlador, sacou? Mesmo eu fazendo esse acoplamento via reflexão comomto cuidado, é tão perigoso assim?
Se puder me dar uns exemplos dos aspectos ruins disso, agradeço mto.

Grande abraço.

Criado 26 de janeiro de 2012
Ultima resposta 26 de jan. de 2012
Respostas 3
Participantes 2