Bonjour à tous!
J'ai un soucis avec mon defaultCellEditor. J'ai un Jtable qui contient 5 champs, dont 2 sont composé de JCheckbox, et je n'arrive pas à éditer les JCheckbox.
voici mon code :
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 String[] titre_colonnes = {"nom","prenom","adresse","to","cc"}; Object[][] list_complete=new Object [list.length][titre_colonnes.length]; //On crée un nouveau tableau en insérant les composant JCheckbox //list est un tableau qui contient, le nom, prénom et l'adresse mail des contact for(int i=0;i<list.length;i++) { for(int j=0;j<titre_colonnes.length;j++) { if(j==0 || j==1 || j==2) list_complete[i][j]=list[i][j]; else list_complete[i][j]=new JCheckBox(""); } } modele mon_modele = new modele(list_complete,titre_colonnes); JTable jTable1 = new JTable(mon_modele); //on ne permet pas de permutter les colonnes jTable1.getTableHeader().setReorderingAllowed(false); jTable1.getColumn("to").setCellRenderer(new checkboxRenderer()); jTable1.getColumn("to").setCellEditor(new checkboxEditor(new JCheckBox())); jTable1.getColumn("cc").setCellRenderer(new checkboxRenderer()); jTable1.getColumn("cc").setCellEditor(new checkboxEditor(new JCheckBox()));
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 import java.awt.*; import java.awt.event.*; import javax.swing.*; class checkboxEditor extends DefaultCellEditor implements ItemListener { private JCheckBox button; public checkboxEditor(JCheckBox checkBox) { super(checkBox); } public Component getTableCellEditorComponent(JTable table, Object value,boolean isSelected, int row, int column) { if (value==null) return null; button = (JCheckBox)value; /*cette instruction indique, que lorsqu'il y aura un changement sur le choix avec le bouton button,la méthode ItemStateChanged de this sera invoquée*/ button.addItemListener(this); System.out.println("on est dans la fonction getTableCellEditorComponent"); return (Component)value; } public Object getCellEditorValue() { button.removeItemListener(this); System.out.println("on est dans la fonction getCellEditorValue"); return button; } public void itemStateChanged(ItemEvent e) { super.fireEditingStopped(); } }Merci d'avance!!!
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 import java.awt.*; import javax.swing.*; import javax.swing.table.*; public class checkboxRenderer implements TableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value==null) return null; return (Component)value; } }
Partager