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á:
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í:
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í:
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í:
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í:
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.
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:
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
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
Buenas Noches
tu tienes tu proyecto "JTable - CheckBox seleccionado" aplicandolo a netbeans, Es de gran urgencia, gracias por tu colaboracion.
Hola, los fuentes de este proyecto está colocados al final de la entrada y fue hecho con netbeans
muchas gracias era lo que estaba buscando
Gracias, me sirvió.
Publicar un comentario