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.

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

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

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);

		}
	}	

}