Trabajo JTable con Dase de Datos (SQL Server). De mucha ayuda para estudiamtes de Ing. de Sistemas. JTable es un componente swing java que nos permite mostrar datos en una tabla de una base de datos, sin embargo a diferencia de otros componentes similares de otros lenguajes de programación, java no nos permite gestionar directamente los datos.
2. CONTROL JTABLE CON BASE DE DATOS
JTable es un componente swing java que nos permite mostrar datos en una tabla de una base de
datos, sin embargo a diferencia de otros componentes similares de otros lenguajes de
programación, java no nos permite gestionar directamente los datos.
Un JTable representa una tabla de datos con sus respectivas Filas y Columnas, la información que
se muestra en ella puede ser ingresada tanto por nosotros como obtenida de una base de datos.
JTable es una clase que me permite organizar una determinada información en tabla, ésta difiere
de una base de datos normal porque al utilizar JTable podemos visualizar esta tabla, brindándole
al usuario organización de información, oportunidades de editar y cambiar el tamaño de las
columnas entre otras.
3. En principio se creó la clase JTable para
constituir un interfaz ligado a bases de datos
a través de "Java Database Connectivity"
(JDBC), y así evita la complejidad que existía
para el manejo de datos, dando así al
programador mucha más facilidad a la hora
de trabajar con este tipo de información.
JTable le da al programador muchas
facilidades, pues este posee varias
características que permiten hacer desde
tablas con información compleja y muy
estructurada hasta tablas con información
sencilla y "básica".
La clase JTable controla como se presentan los
datos, siendo el TableModel quien controla los
datos sí mismos. Para crear una JTable habrá
pues que crear un TableModel antes,
normalmente. TableModel lo que hace es
predeterminar ciertas características para el
JTable es decir, que tú puedes poner ciertos
parámetros dentro de un TableModel y así no
tener que determinarlos siempre.
TableModel es un programa que guarda los
datos de la tabla para sí mismo, es decir, puede
tener la información de la tabla, pero estos
datos son visualizados por el computador.
4. PROPIEDADES:
Llenar un JTable con datos de una base de datos Sql Server.
Para poder hacer esto, primero ya debes de haber importado tu librería de Sql Server conector y
ya tienes tu clase de conexión, si no es así, favor de ver primero este post, haz clic aquí.
Después insertamos un JTable, del lado derecho tenemos el Swing Controls, haz clic sobre Table y
después haz clic sobre tu JFrame para que se inserte el JTable, después, en el Panel de
Properties, busca la opción model y haz clic en el botón de los 3 puntos.
Después en property using, eliges la opción Custom code…
Después le damos un nombre a nuestro modelo de nuestra tabla, yo le pondré modeloTabla.
5. Una vez que le asignamos el modelo a nuestra tabla, vamos al código para asignarle
los encabezados y ver cómo vamos a rellenar la tabla.
Primero damos de alta nuestro modelo ya que lo que hicimos anteriormente fue
asignarle el modelo a la tabla pero no lo declaramos, y es lo que vamos hacer aquí.
Primero, se importan las librerías que se van a ocupar que son:
import javax.swing.table.DefaultTableModel;
import java.sql.*;
import java.util.logging.*;
6. Después como se dijo anteriormente, se
declara nuestro modelo que le asignamos a
nuestra tabla, se declara con
DefaultTableModel, y la librería que ocupa es
javax.swing.table.DefaultTableModel y
además llamamos a nuestra conexión de base
de datos, yo lo llamo como conexion.conexion
por que la primera conexión quiere decir que
es mi Package y la segunda conexión quiere
decir que es mi Clase.
Bien, enseguida si te das cuenta aparece modelo
Tabla, lo que estamos haciendo ahí es inicializando
nuestro modelo, fíjate que como parámetros de
DefaultTableModel esta null y getColumnas (), bien
donde esta null, sería la parte que ocuparíamos
para llenar la tabla de datos, pero aún no llegamos
ahí y llamamos a getColumnas () si te das cuenta es
una subClase de tipo String array donde
especificamos el encabezado de cada columna.
Además observa que tenemos otra subClase
que se llama setFilas(), esta ahí porque al iniciar
la clase va a ejecutar todo lo que este en
setFilas() que es nuestro código que llenará la
tabla de información (no importa si te da error,
deja esa línea ya que si esa no se llenará el
JTable).
Ahora lo más importante, llenar la JTable de
datos, para esto vamos a ver que tiene la
subClase setFilas () que es la que llenará la
JTable de información.
7. EJEMPLOS
Métodos para los suscriptores
Para implementar los métodos de los suscriptores necesitamos que
nuestro modelo tenga una lista de suscriptores y únicamente hay que
añadir o borrar suscriptores de esa lista. El código puede ser tan simple
como esto:
class MiModelo implements TableModel
{
public void addTableModelListener (TableModelListenerl) {
suscriptores.add (l);
}
public void removeTableModelListener (TableModelListener l) {
suscriptores.remove(l);< BR > }
private LinkedList suscriptores = new LinkedList();
}
8. public Object getValueAt (int fila, int columna) {
// Obtenemos la persona de la fila indicada
Persona aux = (Persona)datos.get (fila);
switch (columna) {
// Nos piden el nombre
case 0:
return aux.nombre;
break;
// Nos piden el apellido
case 1:
return aux.apellido;
break;
// Nos piden la edad.
case 2:
return new Integer (aux.edad);
break;
}
return null;
}
private LinkedList datos = new LinkedList();
}
Metodos para manejo de los datos
Para el manejode datos, sólo tenemos dos métodos. El que pone un
dato enuna fila,columna y el que lo obtiene. Si seguimos con la idea de
hacer unalista de personas, el código puede quedar como esto:
class MiModelo implements TableModel
{
public void setValueAt (Object dato, int fila, int columna) {
// Obtenemos la persona de la fila indicada
Persona aux = (Persona)datos.get (fila);
switch (columna) {
// Nos pasan el nombre.
case 0:
aux.nombre = (String)dato;
break;
// Nos pasan el apellido.
case 1:
aux.apellido = (String)dato;
break;
// Nos pasan la edad.
case 2:
aux.edad = ((Integer)dato).intValue();
break;
}
// Aquí hay que avisar a los sucriptores del cambio.
// Ver unpoco más abajo cómo.
}