Utilisation de modele pour un JTable

 

Contexte : Gestion des employes

image

 

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 :

   image

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 image à 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 :

image