Présentation de DefaultTableModel

le

DefaultTableModel
la classe est une sous-classe de la
AbstractTableModel
. Comme son nom l'indique, c'est le modèle de table qui est utilisé par une table JTable quand aucun modèle de table n'est spécifiquement défini par le programmeur. Le DefaultTableModel stocke les données de la JTable dans un
Vecteur
de
Vecteurs
.

Bien que le

Vecteur
est une collection Java héritée, elle est toujours prise en charge et il n'y a aucun problème avec son utilisation à moins que la surcharge supplémentaire causée par l'utilisation d'une collection synchronisée ne soit un problème pour votre application Java.

L'avantage d'utiliser le

DefaultTableModel
sur une coutume
AbstractTableModel
est que vous n'avez pas à coder les méthodes comme ajouter, insérer ou supprimer des lignes et des colonnes. Ils existent déjà pour modifier les données conservées
Vecteur
de
Vecteurs.
Cela en fait un modèle de table simple et rapide à mettre en œuvre.

Déclaration d'importation

import javax.swing.table.DefaultTableModel; 

Constructeurs

le

DefaultTableModel
la classe a six constructeurs. Chacun peut être utilisé pour remplir
DefaultTableModel
en différentes manières.

Le premier constructeur ne prend aucun argument et crée un

DefaultTableModel
qui n'a pas de données, zéro colonne et zéro ligne:
DefaultTableModel defTableModel = DefaultTableModel (); 

Le constructeur suivant peut être utilisé pour spécifier le nombre de lignes et de colonnes d'un

DefaultTableModel
sans données:
DefaultTableModel defTableModel = DefaultTableModel (10, 10); 

Il existe deux constructeurs qui peuvent être utilisés pour créer un

DefaultTableModel
avec des noms de colonne et un nombre spécifié de lignes (contenant toutes des valeurs nulles). On utilise un
Objet
tableau pour contenir les noms des colonnes, l'autre un
Vecteur
:
String [] columnNames = "Column 1", "Column 2", "Column 3";
DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);

ou

DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10); 

Enfin, deux constructeurs sont utilisés pour remplir

DefaultTableModel
avec des données de ligne avec des noms de colonne. Un utilisé
Objet
tableaux, l'autre
Vecteurs
:
Object [] [] data = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Column 1", "Column 2", "Column 3";
DefaultTableModel defTableModel = DefaultTableModel (data, columnNames);

ou

Vector rowData = nouveau Vector ();
rowData.add (1);
Vector> data = new Vector> ();
data.add (0, rowData);
Vector columnNames = new Vector ();
columnNames.add ("Colonne 1");
DefaultTableModel defTableModel = DefaultTableModel (data, columnNames);

Méthodes utiles

Pour ajouter une ligne au

DefaultTableModel
Utilisez le
ajouter une rangée
avec les données de ligne à ajouter:
Object [] newRowData = 5,5,5,5;
defTableModel.addRow (newRowData);

Pour insérer une ligne, utilisez

insertRow
, spécifiant l'index de ligne à insérer et les données de ligne:
Object [] insertRowData = 2.5,2.5,2.5,2.5;
defTableModel.insertRow (2, insertRowData);

Pour supprimer une ligne, utilisez le

removeRow
, spécifiant l'index de ligne à supprimer:
defTableModel.removeRow (0); 

Pour obtenir une valeur dans une cellule de tableau, utilisez le

getValueAt
méthode. Par exemple, si les données de la ligne 2, la colonne 2 contient un int:
int value = tabModel.getValueAt (2, 2); 

Pour définir une valeur dans une cellule de tableau

setValueAt
avec la valeur à définir avec l'index de ligne et de colonne:
defTableModel.setValueAt (8888, 3, 2); 

Conseils d'utilisation

Si un

JTable
est créé à l'aide du constructeur auquel est passé un tableau à deux dimensions contenant les données de ligne et un tableau contenant les noms de colonne:
Object [] [] data = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Column 1", "Column 2", "Column 3";
JTable exampleJTable = new JTable (data, columnNames);

alors la distribution suivante ne fonctionnera pas:

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

Un runtime

ClassCastException
sera jeté parce que dans ce cas, le
DefaultTableModel
est déclaré comme une classe interne anonyme dans le
JTable
objet et ne peut pas être casté. Il ne peut être jeté que sur
TableModel
interface. Un moyen de contourner cela est de créer le vôtre
DefaultTableModel
et le définir comme le modèle de la
JTable
:
Exemple de JTable JTable = new JTable ();
DefaultTableModel defTableModel = new DefaultTableModel (data, columnNames);
exampleJTable.setModel (defTableModel);

Puis le

DefaultTableModel
defTableModel
peut être utilisé pour manipuler les données dans le
JTable
.

Pour voir le

DefaultTableModel
en action jetez un oeil à l'exemple de programme DefaultTableModel.