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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
ConditionsTableModel model = new ConditionsTableModel(columnNames, conditions);
whenRuleTable = new JTable(model);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :-)