JTable - CheckBox seleccionado

En este tema se mostrará cómo podemos cargar un JTable con datos de la base datos y seleccionar los check respectivos.

Al final encontrarás los fuentes, pero sería recomendable que observes unos minutos la explicación de la estructura, si no, igual espero te ayude a lo que buscas :-).

Crearemos una clase para las conexiones, que nos permita establecer las conexiones.

La clase Conexion estará compuesta principalmente por 4 clases del paquete java.sql que son:
- Connection
- DriverManager
- ResultSet
- SQLException

La estructura de la clase Conexion será:


Exported from Notepad++
public class Conexion { private Connection con; private ResultSet rs; /** * Retorna el objeto cargado de la conexión * @return Connection */ public Connection getCon() { ....... } /** * Utilizado para colocar el objeto cargado con la conexión * @param con */ public void setCon(Connection con) { ........ } /** * Utilizado para obtener el objeto con los datos * de la base datos * @return ResultSet */ public ResultSet getRs() { ........ } /** * Utilizado para colocar el objeto con los datos * obtenidos de la base datos * @param rs */ public void setRs(ResultSet rs) { ......... } /** * * Se utiliza para establecer la conexión, * utilizando : * Class.forname("clase.del.proveedor.para.la.base.datos") * y * DriverManager.getConnection(strUrl, strUsuario, strContrasenia) * * @return Connection */ public Connection establecerConexion() { ........ } /** * Utilizado para cerrar la conexión después de cargar los datos */ public void cerrarConexion() { ........ } }

La otra clase que vamos a crear será CargarDatos.
Esta clase la utilizaremos para tomar los datos de la base datos y cargarlos
en un objeto de tipo DefaultTableModel e ir habilitando los check si lo requiere o no.
Esta clae estará compuesta principalmente por 3 clases del paquete java.sql que son:
- PreparedStatement.
- ResultSet.
- SQLException.
Además le agregaremos una sub clase que le llamaremos Escuchar que extenderá de DefaultTableModel, esta subclase nos ayudará determinar en el JTable cuando debe ser un Check y escuchar el evento al momento de seleccionar un registro.
Volviendo a la clase CargarDatos la estructura de esta será así:

Exported from Notepad++
public class CargarDatos { public CargarDatos() { } private Conexion con = null; public DefaultTableModel cargarDatos() { ............ } public void conectar() { } class Escuchar extends DefaultTableModel { .................. } }

En el método cargarDatos() nos encontraremos:
- Que el nombre de las columnas las podemos definir así:

Exported from Notepad++
dfTableModel.addColumn("Código"); dfTableModel.addColumn("nombre"); dfTableModel.addColumn("apellido"); dfTableModel.addColumn("edad"); dfTableModel.addColumn("selección");//corresponde al check

- Que el objeto DefaultTableModel se puede cargar con los datos de la base datos así:

Exported from Notepad++
Object[] fila; String strSelectBd; if (rs != null) { while (rs.next()) { fila = new Object[5]; fila[0] = rs.getString(1); fila[1] = rs.getString(2); fila[2] = rs.getString(3); fila[3] = rs.getString(4); strSelectBd = rs.getString(5); if (strSelectBd.toUpperCase().equals("S")) { fila[4] = Boolean.TRUE; } else { fila[4] = Boolean.FALSE; } dfTableModel.addRow(fila); } }

- Que al momento de verificar los datos que vienen de la base datos para cargalos, ya sea seleccionado o no, se puede hacer así:

Exported from Notepad++
strSelectBd = rs.getString(5); if (strSelectBd.toUpperCase().equals("S")) { fila[4] = Boolean.TRUE; } else { fila[4] = Boolean.FALSE; }

Pasandole true ó false de la clase Boolean.

La siguiente clase que crearemos se llamará DatosTabla que extenderá de JPanel.
Está clase nos servirá para construir un JPanel que contenga un objeto de tipo JTable, Button.


Exported from Notepad++
public class DatosTabla extends JPanel { private JTable tabla; private JScrollPane scrollPane; private JButton boton = new JButton("Aceptar"); private DefaultTableModel dfTablaModel; public DatosTabla(DefaultTableModel dfTabla) { ........ } public void verificarCheck() { ............... } }


Y con el método verificarCheck() se podrá imprimir los datos seleccionados por el usuario mediante el check.

Bueno este ejemplo contiene 4 fuentes que son :
- Conexion.java
- CargarDatos.java
- DatosTabla.java
- DatosTablaMain.java

Para la base datos se creó una tabla que se le llamó usuarios con la siguiente estructura:
- id varchar(8)
- nombre varchar(50)
- apellido varchar(50)
- edad int(8)
- Seleccionado varchar(1)
Coloco los archivos fuentes utilizando para este tema.


7 comentarios:

Mari Martinez dijo...
Este comentario ha sido eliminado por el autor.
Jonny Julian Sanchez Gomez dijo...

Buenos Dias



Quisiera que cuando seleccione el jcheckbox me guarde un 1 o cuando lo deshabilite me guarde un cero como lo puedo aplicar en tu código y en la bases de datos


Gracia

Ariel O. Barria dijo...

Hola, puedes apoyarte con ambos post, este que estás leyendo, en los fuentes te muestra como y este otro en el método verificarCheck()
http://blog.arielb.com/2011/07/obtener-registro-seleccionado-jtable.html

Jonny Julian Sanchez Gomez dijo...

Buenas Noches


tu tienes tu proyecto "JTable - CheckBox seleccionado" aplicandolo a netbeans, Es de gran urgencia, gracias por tu colaboracion.

Ariel O. Barria dijo...

Hola, los fuentes de este proyecto está colocados al final de la entrada y fue hecho con netbeans

face dijo...

muchas gracias era lo que estaba buscando

Anónimo dijo...

Gracias, me sirvió.