Utilisation de modele pour un JTable
Contexte : Gestion des employes
Les étapes :
1. Placer le Jtable sur la fenêtre
2. Créer un modèle de tableau
3. Affecter le modèle créé au jtable
Etape 1 : Placer le jTable sur la fenêtre
Cliquer glisser le composant table sur le formulaire
Redimensionner éventuellement
Etape 2 : Créer un modèle de tableau
Ici le tableau va comporter 8 colonnes (numéro, nom, métier, supérieur, date embauche, salaire, commission, service) et on prévoit 50 lignes maximum.
Créer une classe MonModeleDeTable :
Ce qui donne :
public class MonModeleDeTable
{
}
Cette classe doit hériter de AbstractTableModel qui elle-même implémente l'interface TableModel ce qui donne :
public class MonModeleDeTable extends AbstractTableModel
{
}
On implémente une interface on doit donc redéfinir les méthodes de TableModel :
Cliquer sur à gauche de la ligne public class…. Et
le laisser redéfinir les méthodes (implements all abstract
methods).
Notre tableau comportant 8 colonnes et 50 lignes maximum. On déclare un tableau à une dimension pour les entetes de colonnes :
private String[] columnNames = {"Numéro","Nom","Métier","Supérieur", "Date d'embauche","Salaire","Commission","Service"};
et un tableau à 2 dimensions pour le contenu :
private Object[][] data=new Object[50][8];
Ce qui donne :
public class MonModeleDeTable extends AbstractTableModel
{
private String[] columnNames = {"Numéro","Nom","Métier","Supérieur", "Date d'embauche","Salaire","Commission","Service"};
private Object[][] data=new Object[50][8];
@Override
public int getRowCount()
{
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public int getColumnCount()
{
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public Object getValueAt(int rowIndex, int columnIndex)
{
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
On va redéfinir les méthodes de cette façon :
public int getRowCount()
{
return data.length;
}
public int getColumnCount()
{
return columnNames.length;
}
public Object getValueAt(int row, int col)
{
return data[row][col]; // Retourne la valeur située à la ligne row et colonne col du tableau
}
Et ajouter les 2 méthodes suivantes :
public void setValueAt(Object value, int row, int col)
{
data[row][col] = value; // On met la valeur passée en paramètre dans le tableau data // à la ligne row (2ème paramètre) et à la colonne col (3ème paramètre).
fireTableCellUpdated(row,col); // Pour active la mise à jour
}
public String getColumnName(int col)
{
return columnNames[col];
}
Etape 3 : Affecter le modèle créé au jtable
Cliquer sur le jtable puis clic droit et choisir <Customize code…>
Dans la 2ème liste déroulante choisir custom
property et mettre :
jTable1.setModel(new MonModeleDeTable());
Ce qui donne :