1. Ingeniería de Sistemas y Telemática
Jtable con base de datos
Marco Aurelio Porro Chulli.
Erlin Darwin Herrera Cieza.
Yosmer Aguilar Cabrera.
:V
2. JTABLE
Un JTable es un
componente visual de
Java que nos permite
dibujar una tabla, de
forma que en cada
fila/columna de la tabla
podamos poner el dato
que queramos; un
nombre, un apellido, una
edad, un número, etc.
Es una clase que me permite
organizar una determinada
información en tabla, esta difiere
de una base de datos normal
porque al utilizar Jtable tu puedes
visualizar esta tabla, brindándole a
el usuario organización de
información, oportunidades de
editar y cambiar el tamaño de las
columna entre otras.
3. TABLE MODEL
TableModel quien controla los datos sí
mismos.
Tambien es un programa que guarda
los datos de la tabla para si mismo, es
decir, puede tener la información de la
tabla pero estos datos son los
visualizados por el computador, es
decir, para visualizar una tabla el
TABLEMODEL puede tener la
información pero sin el Jtable no se
puede visualizar para el usuario.
4. EDITABLE O NO
Y LA INFORMACIÓN, Y LAS
COLUMNAS
Existen varias maneras de hacer
editable o no las celdas dentro de la
tabla, para ver estos comandos tu te
puedes dirigir a Dentro de las celdas
encontradas en una tabla se puede
permitir al usuario editar o no editar
según lo desee el programador, esta
propiedad se puede arreglar desde el
table model o directamente y/o desde
el programa.
Jtable te brinda muchas facilidades
para poder crear una tabla, y así
mismo de llenarla con la información
que desees ( números, letras etc...) por
lo que sencillamente dentro de una
tabla esta automáticamente a través
de la información debidamente
separada - por ""(comillas) o por ,
(coma) - es capaz de contabilizarlas y
al mismo tiempo llenarla con la
información que se le dio
5. LLENAR UN JTABLE CON UNA BASE DE DATOS
Devuelve toda la tabla producto
public static DefaultListModel obtenerCodigos() {
DefaultListModel modelo = new DefaultListModel();
try {
DefaultListModel defaultListModel = new DefaultListModel();
int contador=1;
String codigo="";
ResultSet resultados = conexion.ejecutarConsulta("SELECT * FROM producto");
//Este while es quien llega la lista para luego utilizarla llenando el Jtable
while(resultados.next()){
codigo= resultados.getString(1);
defaultListModel.addElement(contador+". "+codigo);
contador++; }
conexion.cerrarConsulta();
return defaultListModel;
} catch (SQLException ex) {
return modelo; } } /
/aqui se llena el Jtable con lo que retorno lo anterior
this.listMarcadores.setModel(obtenerCodigos());
6. JTABLE Y DEFAULTTABLEMODEl
JTABLE Y DEFAULTTABLEMODEL
La forma más sencilla de usar un JTable y
tener toda su funcionalidad es instanciar
un DefaultTableModel y meterlo en
el JTable
DefaultTableModel
modelo = new DefaultTableModel();
JTable tabla = new JTable(modelo);
Aunque en realidad esto no es
estrictamente necesario, porque un
JTable por defecto ya tiene dentro
un DefaultTableModel, así que
también sería válido esto otro
JTable tabla = new JTable();
DefaultTableModel
modelo=(DefaultTableModel)tabla.getModel();
7. AÑADIENDO COLUMNAS
Una vez que tenemos el modelo, de una u otra forma, podemos
añadir columnas directamente en el modelo
modelomodelo.addColumn("etiqueta columna 1");
modelo.addColumn("etiqueta columna 2");
Podemos añadir datos directamente en el modelo, así como
borrarlos o modificarlosObject [] fila = new Object[2];
fila[0] = "dato columna 1";
fila[1] = "dato columna 3";
modelo.addRow ( fila ); // Añade una fila al final
modelo.setValueAt ("nuevo valor", 0, 1); // Cambia el valor de la fila
1, columna 2.
modelo.removeRow (0); // Borra la primera fila
8. La forma más sencilla de usar un JTable y tener toda su funcionalidad es instanciar un
DefaultTableModel y meterlo en el JTable, en el constructor
JTABLEY DEFAULTTABLEMODEL
DefaultTableModel modelo = new DefaultTableModel();
JTable tabla = new JTable(modelo);
9. Obtener fila y columna del JTable en la que se hace click
tabla.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
int fila = tabla.rowAtPoint(e.getPoint());
int columna = tabla.columnAtPoint(e.getPoint());
if ((fila > -1) && (columna > -1))
System.out.println(modelo.getValueAt(fila,columna));
}
});
A veces nos interesa seleccionar una fila del JTable para hacer algo con ella (sacar un
menú, recoger datos para mostrarlos en otro sitio, etc).
Una forma de hacerlo es añadiendo un MouseListener al JTable, de esta manera
10. Hacer que una celda del JTable no sea editable
La forma de decidir qué celdas son o no editables es hacer nuestro propio modelo de
datos, nuestro TableModel. La forma sencilla de hacerlo es heredar de DefaultTableModel
y redefinir el método isCellEditable() para que sirva a nuestros propósitos
public class MiModelo extends DefaultTableModel
{
public boolean isCellEditable (int row, int column)
{
// Aquí devolvemos true o false según queramos que una
celda
// identificada por fila,columna (row,column), sea o no
editable
if (column == 3)
return true;
return false;
}
}
11. CAMBIAR EL TIPO DE DATO CON DEFAULTTABLEMODEL
Para modificar esto, tenemos que crearnos nuestro propio modelo de Datos. La
forma más sencilla es heredar de DefaultTableModel y redefinir el método
getColumnClass().
public class MiModelo extends DefaultTableModel
{
/** Primera columna Boolean, segunda Integer y el resto
Object */
public Class getColumnClass(int columna)
{
if (columna == 0) return Boolean.class;
if (columna == 1) return Integer.class;
return Object.class;
}
}
12. HACER VISIBLE UNA FILA CONCRETA DEL JTABLE DENTRO DE
UN JSCROOLPANE
Para que un JTable tenga barras de scroll y tenga una "cabecera" con las etiquetas de las
columnas, es necesario meterla en un JScrollPane. Esto se puede hacer de dos formas.
JTable tabla = new JTable();
JScrollPane scroll = new JScrollPane(tabla);
o bien
JTable tabla = new JTable();
JScrollPane scroll = new JScrollPane();
scroll.setViewportView(tabla);
13. class MiModelo implements TableModel
{
public void addTableModelListener (TableModelListener l) {...}
public Class getColumnClass (int columIndex) {...}
public int getColumnCount() {...}
public String getColumnName (int columnIndex) {...}
public int getRowCount() {...}
public Object getValueAt (int rowIndex, int columnIndex) {...}
public boolean isCellEditable (int rowIndex, int columnIndex) {...}
public void removeTableModelListener (TableModelListener l) {...}
public void setValueAt (Object aValue, int rowIndex, int columnIndex)
}
Una clase que implemente un TableModel debe redefinir los siguientes métodos:
14. HAY BÁSICAMENTE TRES TIPOS DE MÉTODOS:
•Métodos para manejo de suscriptores al modelo. Un suscriptor es
cualquier clase que quiera enterarse de cambios en los datos del modelo. El
JTable es un ejemplo claro. El JTable se suscribe a cambios de datos en el
modelo y de esta forma, en cuanto cambiemos datos en el modelo, el JTable
se entera y se repinta automáticamente la pantalla. En este grupo están los
métodos addTableModelListener() y removeTableModelListener()
•Métodos para manejo de datos. Permiten obtener y cambiar datos dentro
de la tabla. Son los métodos getValueAt() y setValueAt().
•El resto son métodos para obtener información de la tabla en sí misma,
como número de filas, número de columnas, si una fila-columna es o no
editable, nombre de la columna, etc.