Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problema para inhabilitar un celda de un JTable

Buenas a todos, soy nuevo en esto. Muchísimas gracias a tod@s de antemano.
Estoy realizando una aplicación en la que tengo un JTable de 5x5. En una determinada fila, tengo tres valores posibles a elegir de un JComboBox, y en función del valor que tome, necesito que una celda de otra columna se inhabilite. Llevo varios días intentándolo y no doy con la tecla.
Gracias por todo.

septiembre 15, 2012 | Registered Commenteralfilblanco

Las implementaciones de los modelos de JTable tienen un método isCellEditable que debes usar, o sobreescribir (según el modelo) para obtener lo que quieres.

septiembre 15, 2012 | Registered Commenterchoces

Gracias por contestar.
Me he ido al método y por defecto tiene:
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
donde el aray canEdit me inhabilita la primera columna, y el esto las tengo editables, pero no consigo dar con el código a insertar en el método isCellEditable, para que realice lo que expongo. Estoy empezando en Java y hay cosas que las voy asimilando poco a poco.
Gracias.

septiembre 15, 2012 | Registered Commenteralfilblanco

Si quieres que una columna determinada no sea editable, debes modificar ese array canEdit, para la columna en cuestión.

septiembre 15, 2012 | Registered Commenterchoces

Pero si modifico ese array para la columna determinada, se hace editable o no toda la columna, no? Lo que pretendo conseguir es en una determinada columna, tendré celdas editables otras no, en función de otra columna de la misma tabla, en función del valor que tome esta última.
Gracias

septiembre 15, 2012 | Unregistered Commenteralfilblanco

Ese método tiene como parámetros un índice de fila y otro de columna.
Con ellos puedes decidir si una celda determinada es editable o no.
De la manera como usas ese array, me temo que con un array unidimensional no podrás resolverlo. Puedes probar con un array de dos dimensiones, para controlar la edición de cualquier celda de la tabla.

Si solamente quieres controlar la de dos columnas concretas, puedes usar un if en ese método, de tal manera que uses un array para cada columna editable, y con el if decides cuál acepta edición y cual no. Basta con actualizar ese array en función de la condición, y obtienes el resultado para una celda concreta de esa columna.

septiembre 15, 2012 | Registered Commenterchoces