Olá pessoal,
Estou quebrando a cabeça para aplicar umas regras a um formulario JFrame, o problema é que de acordo com o usuario/papel/perfil preciso habilitar a edição ou nao de um determinado JTextField.
Estou tentando usar reflection, porem nem sei se é o mais indicado, já tentei instanceof, etc.
a ideia é ao instanciar um JFrame chamar esta funcao AplicarRegras(usuario, this) entao a classe vai verificar se tem algum atributo cadastrato em uma base para desabilita-lo de acordo com permissoes do usuario.
a funcao esta localizando o atributo(CAIXA) porem nao sei como desabilita-lo.
Segue codigo que tentei utilizar porem após varias tentativas e todas com erro estou passando para solicitar auxilio:
[code]
package Controle;
//import java.awt.Component;
import java.awt.Component;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import javax.swing.JFrame;
import javax.swing.JTextField;
/**
*
-
@author Valtemir
*/
public class Seguranca {public Seguranca() {
}
private Method Metodo;
private Class classe;
private String nomeClasse;
private String pObjeto = “CAIXA”;
private String pTipoObjeto = “JTextField”;
private String pMetodo = “setEnabled”;
private boolean pvalor = false;public void AplicarRegras(String Usuario, Object objeto) {
try {
classe = objeto.getClass();
nomeClasse = classe.getSimpleName();
Field[] Atributos = classe.getDeclaredFields();
for (Field Atributo : Atributos) {
if (Atributo.getName().equals(pObjeto)) {
//Metodo = classe.getMethod(pObjeto + “.” + pMetodo, boolean.class);
// Metodo.invoke(classe, new Object[]{pvalor});
Class classz = Atributo.getClass();
System.out.println(“Classe:” + Atributo.getDeclaringClass());
Method method = JTextField.class.getMethod(“setEnabled”, new Class[]{Boolean.TYPE});
method.invoke(classz, false);
System.out.println(“executou…Modo Seguranda o atributo” + pObjeto);
}
}
// Method m[] = classe.getDeclaredMethods();
// for (int i = 0; i < m.length; i++) {
// System.out.println( m[i].toString() );
// }} catch (Exception e) { e.printStackTrace(); }
}
}[/code]
nem vou postar o erro pois já foi varias tentativas, varios erros, etc…
qualquer ajuda será bem vinda.
grato.