Java - Llamar a un objeto con lo que tengo guardado en un String

 
Vista:
sin imagen de perfil

Llamar a un objeto con lo que tengo guardado en un String

Publicado por Damián (2 intervenciones) el 11/06/2015 00:58:26
Hola a todo el mundo!

Tengo una consulta que seguramente la respuesta es muy sencilla para los programadores con experiencia pero para alguien que está comenzando como yo, es algo que no me deja avanzar...

Tengo varios objetos JLabel los cuales tienen como nombre label1, label2, label3 y así hasta label100
Quiero que en cada label al comienzo del programa digan "Rellenar" y luego de un determinado suceso pasen a decir "Persona x". Digamos, para ser más específico, en label1 que pase a decir Persona1, en label2 que pase a decir Persona2 y así hasta label 100 que pase a decir Persona100.
Lo podría hacer con label1.setText("Persona1") y así, pero estoy seguro que hay alguna forma más dinámica. Lo que quisiera es poder hacer un for en el cual tengo un String que se irá llamando label1, label2 y así y le voy metiendo el dato Persona1, Persona2, etc
Algo así:

JLabel label1 = new JLabel("Rellenar");
JLabel label2 = new JLabel("Rellenar");
.....
JLabel label100 = new JLabel("Rellenar");

.....

String s;
for(int i=1;i<101;i++){
s="label"+Integer.toString(i);
la_palabra_que_acabo_de_guardar_en_s.setText("Persona"+Integer.toString(i));
}


Cual sería la conversión que tengo que hacer para que la palabra que acabo de guardar en s pase a ser mi objeto JLabel?

Muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Llamar a un objeto con lo que tengo guardado en un String

Publicado por Tom (1831 intervenciones) el 11/06/2015 08:55:21
Pues sí, habría una manera, usando las posibilidades de "reflection" (e introspección) de java, pero dado tu nivel dudo mucho que pudieras usarlo bien.

https://docs.oracle.com/javase/tutorial/reflect/

Lo que tienes que hacer (lo obvio, obvio) es mantener tus objetos JLabel en un array.

1
2
3
for(int i=0; i<100; i++) {
    labels[i].setText(String.format("Persona %d", i + 1));
  }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Llamar a un objeto con lo que tengo guardado en un String

Publicado por Damián (2 intervenciones) el 11/06/2015 10:34:55
Muchas gracias!!! Con esta ayuda ya logré hacer el cambio que quería en mi programa, necesitaba que alguien me ayudase a abrir un poco lo ojos jejeje. Recién estoy empezando en esto de Java y formándome por mi cuenta (con los videos que se encuentran por Youtube) así que por ahora son errores de novato los míos
Gracias y un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar