los
DefaultTableModelclase 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
Vectorde
Vectores.
Aunque el
Vectores 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
DefaultTableModelsobre una costumbre
AbstractTableModeles 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
Vectorde
Vectores.Esto lo convierte en un modelo de tabla rápido y fácil de implementar.
import javax.swing.table.DefaultTableModel;
los
DefaultTableModelLa clase tiene seis constructores. Cada uno puede ser usado para poblar
DefaultTableModelEn maneras diferentes.
El primer constructor no toma argumentos y crea un
DefaultTableModelque 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
DefaultTableModelsin datos:
DefaultTableModel defTableModel = DefaultTableModel (10, 10);
Hay dos constructores que se pueden usar para crear un
DefaultTableModelcon nombres de columna y un número especificado de filas (todas con valores nulos). Uno usa un
Objetomatriz 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
DefaultTableModelcon datos de fila junto con nombres de columna. Uno usado
Objetomatrices, 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);
Para agregar una fila a la
DefaultTableModelutilizar el
añadir filamé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 filamé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
removeRowmétodo, especificando el índice de fila para eliminar:
defTableModel.removeRow (0);
Para obtener un valor en una celda de la tabla, use el
getValueAtmé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
setValueAtMétodo con el valor para establecer junto con el índice de fila y columna:
defTableModel.setValueAt (8888, 3, 2);
Si un
JTablese 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
ClassCastExceptionserá arrojado porque en este caso el
DefaultTableModelse declara como una clase interna anónima en el
JTableobjeto y no se puede lanzar. Solo se puede lanzar al
TableModelinterfaz. Una forma de evitar esto es crear tu propio
DefaultTableModely configurarlo para que sea el modelo de
JTable:
JTable exampleJTable = new JTable ();
DefaultTableModel defTableModel = new DefaultTableModel (data, columnNames);
ejemploJTable.setModel (defTableModel);
Entonces el
DefaultTableModel
defTableModelse puede utilizar para manipular los datos en el
JTable.
Ver el
DefaultTableModelen acción, eche un vistazo al Programa de ejemplo DefaultTableModel.