le
DefaultTableModella 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
Vecteurde
Vecteurs.
Bien que le
Vecteurest 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
DefaultTableModelsur une coutume
AbstractTableModelest 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
Vecteurde
Vecteurs.Cela en fait un modèle de table simple et rapide à mettre en œuvre.
import javax.swing.table.DefaultTableModel;
le
DefaultTableModella classe a six constructeurs. Chacun peut être utilisé pour remplir
DefaultTableModelen différentes manières.
Le premier constructeur ne prend aucun argument et crée un
DefaultTableModelqui 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
DefaultTableModelsans données:
DefaultTableModel defTableModel = DefaultTableModel (10, 10);
Il existe deux constructeurs qui peuvent être utilisés pour créer un
DefaultTableModelavec des noms de colonne et un nombre spécifié de lignes (contenant toutes des valeurs nulles). On utilise un
Objettableau 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
DefaultTableModelavec des données de ligne avec des noms de colonne. Un utilisé
Objettableaux, 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);
Pour ajouter une ligne au
DefaultTableModelUtilisez le
ajouter une rangéeavec 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
getValueAtmé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
setValueAtavec la valeur à définir avec l'index de ligne et de colonne:
defTableModel.setValueAt (8888, 3, 2);
Si un
JTableest 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
ClassCastExceptionsera jeté parce que dans ce cas, le
DefaultTableModelest déclaré comme une classe interne anonyme dans le
JTableobjet et ne peut pas être casté. Il ne peut être jeté que sur
TableModelinterface. Un moyen de contourner cela est de créer le vôtre
DefaultTableModelet 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
defTableModelpeut être utilisé pour manipuler les données dans le
JTable.
Pour voir le
DefaultTableModelen action jetez un oeil à l'exemple de programme DefaultTableModel.