String a Objeto JtextField

Ya hice esta pregunta, pero leí algo parecido que contestaste sobre el tema.
Mi problema es el siguiente.
Trabajo sobre JAVA ambiente escritorio.
Tengo Un JFrameForm donde tengo una serie de JtextFields, todos deshabilitados, realizo la conexiona una BD donde tengo una tabla donde guardo los nombres de los JTextFields según el nombre de usuario.
La consulta que realizo sale perfectamente bien, y me trae los nombres de los JTextField, lógicamente los trae tipo String.
De esta forma lo que pretendo es poder habilitar los JtextFields que traje en la consulta, pero no tengo ni idea de como convertir el String a Objeto JtextField.
Tampoco puedo crear otros JTextfields, ya que estos ya están creados por diseño.
He intentado con esto.. Pero no seque más pueda seguir
String tmp = "txtNom"; // este es el nombre de un JtextField
            this.metodo(JTextField.class.cast(tmp)); //aki se genera el error
private void metodo(javax.swing.JTextField nom)
        {
             nom.setEnabled(false);
        }
El errror ke genera es este:
java.lang.IllegalAccessException: Can not call newInstance() on the Class for java.lang.Class

1 respuesta

Respuesta
1
Por la forma en como la quieres manejar va a ser muy difícil por no decir que imposible, puedes crear un nuevo objeto a partir de su nombre (paquete + nombre de clase) pero no puedes "recuperar" uno ya existente.
Quizás pudieras lograrlo si usas introspección sobre la clase para obtener todos los atributos definidos en ella y tratar de empatar eso con lo que viene en tu bd.
Te recomiendo que busques otra forma, recuerda que si algo se empieza a complicar es porque hay algún error en el diseño, las cosas simples son más fáciles de mantener.
Una idea... crea todo dinámicamente en lugar de activar/desactivar objetos. Otra opción si no quieres crear todo dinámico, mete cada textfield en un hashmap con las claves correspondiendo a los valores de la bd, así pudieras activar/desactivar los que necesites encontrándolos de una forma muy sencilla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas