Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Opciones de jbutton con nombre desde String

Buena tarde, soy nuevo acá, les comento que en este momento estoy haciendo una matriz con java utilizando el modo gráfico, esta matriz cuenta con 8 filas y 8 columnas, osea que tengo 64 jbutton creados en ella, los nombre de una forma en que los pueda identificar por ejemplo: el boton de la fila uno y columna uno se llama j11 el de la columna dos es j12 etc.

Mi problema es que desde una jFrame anterior indico cuanto mide mi matriz en filas y columnas, por ejemplo: si quiero que sea de 3 filas y 5 columnas solo aparecen habilitados los botones que están en ese rango.

y para esto tendría que comprobar el numero ingresado y por cada posible opción ingresar que botones estarán habilitado lo cual sería mucho código de por gusto.

lo que quería hacer pero no sé si es posible es lo siguiente: ingresar en una string el nombre del button y de alguna forma hacer que con el nombre ingresado poder hacer que se habiliten los botones ejemplo:

String nombre="j";
for(int i=1; i<9; i++){
for(int j=1; j<9; j++){
nombre=nombre+Double.toString(i)+Double.toString(j); //almacenando cada nombre de cada boton en la variable nombre
//aqui de alguna forma indicar que el boton: nombre osea(j11) sea habilitado
}
}

Gracias

octubre 15, 2014 | Registered Commenternelson24

Yo haría eso con una tabla hash (un hashtable o un hashmap). Este tipo de objeto lo que te permite es que almacenar un objeto en base a un valor clave (por ejemplo un string).

De esta forma cuando creas tu botones los puedes ir guardando en este hashmap y recuperándolo de la siguiente manera


....
Jbutton jb11 = new Jbutton();
Jbutton jb12 = new Jbutton();
......

Hashmap buttonHash= new HashMap();

buttonHash.put("j11",jb11);
buttonHash.put("j12",jb12);
.................

//Suponemos que el valor recuperado con el nombre del jbutton a habilitar está en la variable String valor y su valor es "j11"

Jbutton jbuttonToEnable= (Jbutton )buttonHash.get(valor);
jbuttonToEnable.enable();
....
...

También te dejo un sencillo ejemplo de HashMap para que lo ejecutes y lo entiendas mejor.

http://www.java-samples.com/showtutorial.php?tutorialid=369

octubre 16, 2014 | Registered Commenterantuansoft

Gracias antuansoft,

ya estoy probando eso pero no me funciona del todo bien. ya que a la hora de hacer los for correspondientes pongo:

valor="el nombre almacenado en el hashmap"
JButton boton=(JButton) mapa.get(valor);
boton.setVisible(false);

y si me oculta unos botones pero en unos casos me oculta unos que nada que ver porque tienen como nombre de variable JButton14 por ejemplo y en la variable valor solo van "j11", "j12" por ejemplo, no se por que me oculta los botones que no son

octubre 22, 2014 | Registered Commenternelson24

Lo siento, ya encontré el error, y esque al volver invisibles unos botones los demás se movían y por eso pensaba que los que se ocultaban eran otros, Gracias antuansoft, Me sirvió de mucho el Hashmap

octubre 22, 2014 | Registered Commenternelson24