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
| public class FicheModel extends AbstractTableModel {
private static final String[] COLUMN_NAMES = {"Nom","Valeur"};
private static final int COLUMN_NOM_INDEX = 0;
private static final int COLUMN_VALUE_INDEX = 1;
private TableModel modelListe;
private int selectedIndex=-1;
public FicheModel(JTable tableListe) {
modelListe = tableListe.getModel();
tableListe.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
selectedIndex = e.getFirstIndex();
}
});
modelListe.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
// ici il faut coder les branchements sur les évenements :
// exemple :
if ( e.getFirstRow()>=selectedIndex && e.getLastRow()>=selectedIndex ) {
if ( e.getType()==TableModelEvent.UPDATE ) {
// mise à jour
fireTableCellUpdated(selectedIndex, e.getColumn());
}
}
}
});
}
@Override
public String getColumnName(int column) {
return COLUMN_NAMES[column];
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch(columnIndex) {
case COLUMN_NOM_INDEX:
return String.class;
case COLUMN_VALUE_INDEX:
return Object.class; // à voir si toutes tes colonnes sont du même type, auquel cas, tu peux retourner ici ce type
default:
return null;
}
}
@Override
public int getRowCount() {
// le nombre de ligne, c'est le nombre de colonnes de l'autre, quand il y a sélection
if ( selectedIndex<0 ) {
return 0;
}
else {
return modelListe.getColumnCount();
}
}
@Override
public int getColumnCount() {
// le nombre de colonnes, c'est 2 (une pour Nom, une pour Valeur
if ( selectedIndex<0 ) {
return 0;
}
else {
return 2;
}
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if ( selectedIndex<0 ) {
return null;
}
else {
switch(columnIndex) {
case COLUMN_NOM_INDEX:
return modelListe.getColumnName(rowIndex); // le nom de la propriété
case COLUMN_VALUE_INDEX:
return modelListe.getValueAt(selectedIndex, rowIndex); // la valeur de la propriété
default:
return null;
}
}
}
} |
Partager