bug édition valeur dans une JTable
Bonjour,
J'ai un bug d'edition dans ma JTable, que je ne comprends pas.
Ma JTable a deux colonnes dont la première a un éditeur ComboBox.
Ce qui se passe, quand j'effectue les actions suivantes :
- sur ma 1ère ligne, je clique sur la première cellule et je selectionne ma valeur avec l'editeur de combobx
- sur ma 1ère ligne, je clique sur ma 2ème cellule, et sans comprendre pourquoi, il me colle la valeur choisie précédemment :-(
Voila le code correspondant:
Code:
1 2 3
|
ConditionsTableModel model = new ConditionsTableModel(columnNames, conditions);
whenRuleTable = new JTable(model); |
Code:
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
| public class ConditionsTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private String[] columnNames;
private List<Condition> conditions;
public final Object[] longValues = {"la langue du document est", "XXX"};
public ConditionsTableModel(String[] columnNames){
super();
this.columnNames = columnNames;
}
public ConditionsTableModel(String[] columnNames, List<Condition> conditions){
super();
this.columnNames = columnNames;
this.conditions = conditions;
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public int getRowCount() {
return conditions.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Object result = null;
switch(columnIndex){
case 0:
// On est dans la partie condition
result = conditions.get(rowIndex).getLeft();
break;
case 1:
result = conditions.get(rowIndex).getValeur();
break;
}
return result;
}
public String getColumnName(int col) {
return columnNames[col];
}
public List<Condition> getConditions() {
return conditions;
}
public void setConditions(List<Condition> conditions){
this.conditions = conditions;
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
return true;
}
public void setValueAt(Object value, int row, int col) {
switch(col){
case 0:
conditions.get(row).setCondition((String)value);
case 1:
conditions.get(row).setValeur((String)value);
}
// Debug
System.out.println("setValueAt"+ "(value = " + value + "," + row + "," + col + ")");
fireTableCellUpdated(row, col);
}
public void addRow(Condition condition){
conditions.add(condition);
fireTableDataChanged();
}
public void initialiaze(List<Condition> conditions){
for (Condition condition : conditions){
addRow(condition);
}
} |
Une idée?
Merci :-)