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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| //CLASSE MODÈLE PERSONNALISÉE
class NonEditableDefaultTableModel extends AbstractTableModel{
private Object[][] data;
private String[] title;
/**
* Constructeur
* @param data
* @param title
*/
public NonEditableDefaultTableModel(Object[][] data, String[] title){
this.data = data;
this.title = title;
}
public NonEditableDefaultTableModel(String[] title){
this.title = title;
}
/**
* 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 le titre de la colonne à l'indice spécifé
*/
public String getColumnName(int col) {
return this.title[col];
}
/**
* Retourne la valeur à l'emplacement spécifié
*/
public Object getValueAt(int row, int col) {
return this.data[row][col];
}
/**
* Défini la valeur à l'emplacement spécifié
*/
public void setValueAt(Object value, int row, int col) {
//On interdit la modification sur certaine colonne !
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
* @param col
*/
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 sur chaque ligne 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
* @param position
*/
public void removeRow(int position){
int indice = 0, indice2 = 0, nbRow = this.getRowCount()-1, nbCol = this.getColumnCount();
Object temp[][] = new Object[nbRow][nbCol];
for(Object[] value : this.data){
if(indice != position){
temp[indice2++] = value;
}
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 à jours complète du tableau
this.fireTableDataChanged();
}
/**
* Permet d'ajouter une ligne dans le tableau
* @param data
*/
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 à jours complète du tableau
this.fireTableDataChanged();
}
} |
Partager