Ver Mensaje Individual
  #13 (permalink)  
Antiguo 16/02/2010, 14:53
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Checkbox en JTable

Hola,

Voy a intentar explicar el concepto inicial que mencioné y estoy casi seguro que ese es el motivo por el cual no funciona como deseas y te evitas muchos inconvenientes. (Espero que se entienda).

El TableModel guarda los datos que vas a mostrar en el JTable, esos datos deben corresponder exactamente igual en el modelo y en la tabla, en tipo de datos y valores. Si el TableModel tiene valores Boolean encones JTable se encarga de todo lo demás (desplegar el CheckBox).

Por ejemplo:

El TableModel ...

Código:
Boolean | Int | String | String ...
Boolean | Int | String | String ...
Boolean | Int | String | String ...
En ese caso el JTable va a usar un CheckBox automáticamente en la primera columna, solamente tienes que unir el TableModel con el JTable y no necesitas renders, ni editors, ni hacerlo editable, ni observar eventos.

Ahora bien, nunca mencionaste que tipo y como llenas el TableModel, y si hiciste tu propio TableModel del AbstractTableModel.

Pero de cualquier forma si @Overrides el método 'getColumnClass' y devuelves un Boolean en la primera columna, y además tienes manejas 'verdaderamente' valores Boolean en esa columna, es decir el getValueAt y setValueAt, etc. regresan Boolean en esa columna, automáticamente se va desplegar un CheckBox completamente editable y funcional.

Y no necesitas listeners para saber cual está 'encendido' o 'apagado' puesto que lo tendrías en el TableModel.

Código:
False | 1 | "Hello" | "World" ...
False | 8 | "Hello" | "World" ...
True  | 4 | "Hello" | "World" ...
El único caso que necesitas listeners es que necesites que al seleccionarse se abra otra ventana o cambie otro valor del JTable automáticamente, o realice alguna otra actividad que no sea activar el CheckBox.

Cita:
... puede ser un motivo no tener guardado en la base de datos una variable que represente el checkbox, ....
Es lo que vengo diciendo desde el primer post. Pero no es necesario que lo tengas en la base de datos, solo en el TableModel.

Espero que ahora haya quedado mas claro,
Sino deplano ... no hay forma de explicarlo,

Saludos,