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 :
