JTable avec modèle

Bonjour à tous,

Je commence cette série de tuto Java par la présentation d’un JTable qui reste un élément simple à mettre en place. Il est toujours intéressant de pouvoir placer des tableaux dans une application java.

J’ai donc suivi le modèle MVC (Modèle vue Contrôleur), pour l’instant il n’y a que le MV, je rajouterai dans un prochain article le contrôleur.

Je crée d’abord mon Object. Dans mon cas sera un ordinateur avec comme attribut une marque et un prix.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Ordinateur {
 
   private String marque;
 
   private double prix;
 
   public Ordinateur(String marque,double prix){
      this.marque=marque;
      this.prix=prix;
   }
   public String getMarque() {
      return marque;
   }
   public void setMarque(String marque) {
      this.marque = marque;
   }
   public double getPrix() {
      return prix;
   }
   public void setPrix(double prix) {
      this.prix = prix;
   }
   public static Object[] recupererNomsColonnes(){
      Object [] listeColonnes = {"Marque","Prix"};
      return listeColonnes;
   }
   public Object[] recuperDonnees(){
      String [] util = new String[2];
      util[0] = ""+getMarque();
      util[1] = ""+getPrix();
      return util;
   }
}

Ensuite je crée un Object qui reprendra la liste de tous les ordinateurs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.ArrayList;
 
public class ListOrdinateur {
    private ArrayList listOrdi;
    public ListOrdinateur(){
        listOrdi = new ArrayList();    
    }
    public ListOrdinateur (ArrayListliste){
        listOrdi = new ArrayList();
        listOrdi.addAll(liste);    
    }
    public void ajouterJoueur(Ordinateur ordi){
        listOrdi.add(ordi);
    }
    public void suppLigne(int nbr){
        listOrdi.remove(nbr);
    }
 
    public Object [][] recupererDonnees(){
        Object[][] contenuListe = new String [listOrdi.size()][2];
        for(int i=0; i liste){
        listOrdi.addAll(liste);
    }
    public  void affList(){
        for(int i=0; i getArrayListOrdinateur(){
        return listOrdi;
    }
 
}

Je mets en place le modèle qui permettra de faire le lien avec notre JTable

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import javax.swing.table.AbstractTableModel;
 
public class ModeleTableOrdinateur  extends AbstractTableModel {
    private static final long serialVersionUID = 1L;
    private Object[] nomColonnes;
    private Object[][] donnees;
    private ListOrdinateur listeOrdi;
 
    public ModeleTableOrdinateur(ListOrdinateur listeOrdinateur){
        donnees = listeOrdinateur.recupererDonnees();
        nomColonnes = ListOrdinateur.recupererNomsColonnes();
        this.listeOrdi=listeOrdinateur;
    }
    public int getColumnCount(){
        return nomColonnes.length;
    }
    public int getRowCount(){
        return donnees.length;
    }
    public Object getValueAt(int row , int col){
        return donnees[row][col];
    }
    public String getColumnName(int col){
        return (String) nomColonnes[col];
    }
    public void mettreAjourDonnees(){
        donnees= listeOrdi.recupererDonnees();
    }
    public boolean isCellEditable(int row, int col){
        return false;
    }
    public void setValueAt(String val,int rowIndex, int columnIndex) {       
        if(val!= null){        
            donnees[rowIndex][columnIndex]=val;       
            fireTableCellUpdated(rowIndex,columnIndex);
 
        }
    }  
 
}