Files
Java_Dev/TestTableau/src/modele/ZModel.java
Christian Cunat-Brulé f55475a23f CCB Premier Import
2018-07-23 10:52:48 +02:00

96 lines
2.9 KiB
Java

package modele;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
class ZModel extends AbstractTableModel{
private Object[][] data;
private String[] title;
//Constructeur
public ZModel(Object[][] data, String[] title){
this.data = data;
this.title = title;
}
//Retourne le titre de la colonne à l'indice spécifié
public String getColumnName(int col) {
return this.title[col];
}
//Retourne le nombre de colonnes
public int getColumnCount() {
return this.title.length;
}
//Retourne le nombre de lignes
public int getRowCount() {
return this.data.length;
}
//Retourne la valeur à l'emplacement spécifié
public Object getValueAt(int row, int col) {
return this.data[row][col];
}
//Définit la valeur à l'emplacement spécifié
public void setValueAt(Object value, int row, int col) {
//On interdit la modification sur certaines colonnes !
if(!this.getColumnName(col).equals("Age")
&& !this.getColumnName(col).equals("Suppression"))
this.data[row][col] = value;
}
//Retourne la classe de la donnée de la colonne
public Class getColumnClass(int col){
//On retourne le type de la cellule à la colonne demandée
//On se moque de la ligne puisque les données sont les mêmes
//On choisit donc la première ligne
return this.data[0][col].getClass();
}
//Méthode permettant de retirer une ligne du tableau
public void removeRow(int position){
int indice = 0, indice2 = 0;
int nbRow = this.getRowCount()-1;
int nbCol = this.getColumnCount();
Object temp[][] = new Object[nbRow][nbCol];
for(Object[] value : this.data){
if(indice != position){
temp[indice2++] = value;
}
System.out.println("Indice = " + indice);
indice++;
}
this.data = temp;
temp = null;
//Cette méthode permet d'avertir le tableau que les données
//ont été modifiées, ce qui permet une mise à jour complète du tableau
this.fireTableDataChanged();
}
//Permet d'ajouter une ligne dans le tableau
public void addRow(Object[] data){
int indice = 0, nbRow = this.getRowCount(), nbCol = this.getColumnCount();
Object temp[][] = this.data;
this.data = new Object[nbRow+1][nbCol];
for(Object[] value : temp)
this.data[indice++] = value;
this.data[indice] = data;
temp = null;
//Cette méthode permet d'avertir le tableau que les données
//ont été modifiées, ce qui permet une mise à jour complète du tableau
this.fireTableDataChanged();
}
public boolean isCellEditable(int row, int col){
return true;
}
}