DefaultTableModel Overview

los

DefaultTableModel
clase es una subclase de la
AbstractTableModel
. Como su nombre lo indica, es el modelo de tabla que utiliza un JTable cuando el programador no define específicamente ningún modelo de tabla. DefaultTableModel almacena los datos de JTable en un
Vector
de
Vectores
.

Aunque el

Vector
es una colección de Java heredada, todavía es compatible y no hay ningún problema con su uso a menos que la sobrecarga adicional causada por el uso de una colección sincronizada sea un problema para su aplicación Java.

La ventaja de usar el

DefaultTableModel
sobre una costumbre
AbstractTableModel
es que no tiene que codificar los métodos como agregar, insertar o eliminar filas y columnas. Ya existen para cambiar los datos contenidos en el
Vector
de
Vectores.
Esto lo convierte en un modelo de tabla rápido y fácil de implementar.

Declaración de importación

import javax.swing.table.DefaultTableModel; 

Constructores

los

DefaultTableModel
La clase tiene seis constructores. Cada uno puede ser usado para poblar
DefaultTableModel
En maneras diferentes.

El primer constructor no toma argumentos y crea un

DefaultTableModel
que no tiene datos, cero columnas y cero filas:
DefaultTableModel defTableModel = DefaultTableModel (); 

El siguiente constructor se puede usar para especificar el número de filas y columnas de un

DefaultTableModel
sin datos:
DefaultTableModel defTableModel = DefaultTableModel (10, 10); 

Hay dos constructores que se pueden usar para crear un

DefaultTableModel
con nombres de columna y un número especificado de filas (todas con valores nulos). Uno usa un
Objeto
matriz para contener los nombres de columna, el otro un
Vector
:
Cadena [] columnNames = "Columna 1", "Columna 2", "Columna 3";
DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);

o

DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10); 

Finalmente hay dos constructores utilizados para poblar el

DefaultTableModel
con datos de fila junto con nombres de columna. Uno usado
Objeto
matrices, el otro
Vectores
:
Objeto [] [] datos = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
Cadena [] columnNames = "Columna 1", "Columna 2", "Columna 3";
DefaultTableModel defTableModel = DefaultTableModel (data, columnNames);

o

Vector rowData = nuevo Vector ();
rowData.add (1);
Vector> datos = nuevo Vector> ();
data.add (0, rowData);
Vector columnNames = new Vector ();
columnNames.add ("Columna 1");
DefaultTableModel defTableModel = DefaultTableModel (data, columnNames);

Métodos útiles

Para agregar una fila a la

DefaultTableModel
utilizar el
añadir fila
método junto con los datos de fila para agregar:
Object [] newRowData = 5,5,5,5;
defTableModel.addRow (newRowData);

Para insertar una fila use el

insertar fila
método, especificando el índice de fila para insertar y los datos de fila:
Object [] insertRowData = 2.5,2.5,2.5,2.5;
defTableModel.insertRow (2, insertRowData);

Para eliminar una fila, use el

removeRow
método, especificando el índice de fila para eliminar:
defTableModel.removeRow (0); 

Para obtener un valor en una celda de la tabla, use el

getValueAt
método. Por ejemplo, si los datos en la fila 2, la columna 2 contienen un int:
valor int = tabModel.getValueAt (2, 2); 

Para establecer un valor en una celda de la tabla

setValueAt
Método con el valor para establecer junto con el índice de fila y columna:
defTableModel.setValueAt (8888, 3, 2); 

Consejos de uso

Si un

JTable
se crea utilizando el constructor al que se le pasa una matriz bidimensional que contiene los datos de la fila y una matriz que contiene los nombres de columna:
Objeto [] [] datos = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
Cadena [] columnNames = "Columna 1", "Columna 2", "Columna 3";
JTable exampleJTable = new JTable (data, columnNames);

entonces el siguiente elenco no funcionará:

DefaultTableModel dft = (DefaultTableModel) ejemploJTable.getModel ();

Un tiempo de ejecución

ClassCastException
será arrojado porque en este caso el
DefaultTableModel
se declara como una clase interna anónima en el
JTable
objeto y no se puede lanzar. Solo se puede lanzar al
TableModel
interfaz. Una forma de evitar esto es crear tu propio
DefaultTableModel
y configurarlo para que sea el modelo de
JTable
:
JTable exampleJTable = new JTable ();
DefaultTableModel defTableModel = new DefaultTableModel (data, columnNames);
ejemploJTable.setModel (defTableModel);

Entonces el

DefaultTableModel
defTableModel
se puede utilizar para manipular los datos en el
JTable
.

Ver el

DefaultTableModel
en acción, eche un vistazo al Programa de ejemplo DefaultTableModel.