Bonjour,
J'ai créé une Jtable avec une colonne booléenne. Naturellement, j'ai utilisé un JCheckBox pour assurer l'affichage et la saisie des booléens. Or j'ai un problème assez curieux. Lorsque je change l'état d'un CB, il suffit que j'aille dans une case d'une autre colonne pour que le CB revienne à son état initial...Est-ce un problème d'affichage ou un problème d'édition (ou les deux!). Ou bien encore un problème de synchronisation avec la JTable à laquelle j'ai associé ma propre implémentation d'AbstractTableModele.
Merci d'avance
Voici le code de mes deux composants :
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 class AffichageCelluleVisibilite implements TableCellRenderer{ private JCheckBox checkBox = null; public JCheckBox getCheckBox() { if (checkBox == null) { checkBox = new JCheckBox(); } return checkBox; } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value!=null) { Boolean b = (Boolean) value; getCheckBox().setSelected(b.booleanValue()); } return getCheckBox(); } } class EditionCelluleVisibilite extends AbstractCellEditor implements TableCellEditor { private JCheckBox checkBox = null; public JCheckBox getCheckBox() { if (checkBox == null) { checkBox = new JCheckBox(); } return checkBox; } @Override public boolean shouldSelectCell(EventObject arg0) { return false; } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { return getCheckBox(); } public Object getCellEditorValue() { return new Boolean(getCheckBox().isSelected()); } }
Partager