Bonjour à tous,
Voilà j'ai une JTable contenant 60 colonnes, et dans un panel ailleurs dans mon code j'ai 2 JCheckBox qui correspondent chacune à 1 groupe de 30 colonnes.
La première checkbox (que j'appelerai checkbox A) correspond aux 30 premières colonnes, et donc logiquement la checkbox B correspond aux 30 dernières colonnes).
Mon but : lorsque je décoche une checkbox, ma JTable se "rafraichit" et seules le groupe de colonnes dont la checkbox est cochée sont affichée.
Règle de gestion : Lorsqu'une checkbox est décochée, l'autre doit rester cochée ! (Ainsi il y aura toujours quelque chose à afficher dans la JTable)
Je développe en JAVA 1.4, et mes données sont chargées dans un Vector qui lui même contiennent plusieurs Vector. J'utilise un modèle héritant d'un DefaultTableModel auquel j'ai redéfinit les fonctions suivantes :
En ce qui concerne la vue, j'ai simplement redéfini les méthodes suivantes :
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 public class TableMobileModel extends DefaultTableModel { public TableMobileModel(Vector data, Vector columnNames) { super(data,columnNames); } public boolean isCellEditable(int row, int column) { return true; } public void addRow(Vector rowData) { super.addRow(rowData); } }
Voilà ! J'aimerai si possible ne pas trop changer la structure de ce que j'ai fait en créant des TableColumnModel etc...
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 _tableMobile = new JTable(new TableMobileModel(_listeDataMobile, _listeColonnesMobile)) { //@Override public TableCellEditor getCellEditor(int row, int column) { if (row==0) return getDefaultEditor(Boolean.class); else return super.getCellEditor(row, column); } //@Override public TableCellRenderer getCellRenderer(int row, int column) { if (row==0) return getDefaultRenderer(Boolean.class); else return super.getCellRenderer(row, column); } //@Override public boolean isCellEditable(int row, int column) { return true; } };
Quelqu'un aurait une idée sur comment masquer les colonnes sans avoir à recharger les données lorsque celle-ci sera de nouveau affichée ?
Partager