Bonjour,
encore merci à sinok qui m'a fourni un très bon lien pour les filtres de JList
(j'ai adapté au Jtables pour mon problème)
http://www-128.ibm.com/developerwork...ary/j-filters/
voici mon code qui comporte 1 erreur (au moins)
(sinon, ca filtre comme je voulais)
- je ne vois plus les headers (je les avais sans le filtre)
il est appellé dans la fenètre principale :
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 import java.util.ArrayList; import javax.swing.event.TableModelListener; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; public class filtre_couleurs extends AbstractTableModelFilter { //listes des indices "autorisés" protected ArrayList indexList = new ArrayList(); // Current State protected String state; public filtre_couleurs(TableModel delegate) { super(delegate); this.setState("NONE"); } public synchronized void setState(String myState) { state = myState; indexList.clear(); //indexList.add(new Integer()); for(int i =0; i < delegate.getRowCount();i++) { if(delegate.getValueAt(i,0).equals(state)||state.equals("NONE")) indexList.add(new Integer(i)); } this.fireTableDataChanged(); } public int getRowCount() { // TODO Auto-generated method stub return indexList.size(); } public int getColumnCount() { // TODO Auto-generated method stub return delegate.getColumnCount(); } public Object getValueAt(int arg0, int arg1) { // TODO Auto-generated method stub int newIndex = ((Integer) indexList.get(arg0)).intValue(); return delegate.getValueAt(newIndex, arg1); } } abstract class AbstractTableModelFilter extends AbstractTableModel { // Storage of reference to model being filtered protected TableModel delegate; // Constructor - takes a single parameter containing // a reference to the model being filtered public AbstractTableModelFilter(TableModel delegate) { this.delegate = delegate; } public TableModel getDelegate() { return this.delegate; } public Object getValueAt(int index, int index2) { // delegate to filter target return delegate.getValueAt(index, index2); } public void addTableDataListener(TableModelListener listener) { // delegate to filter target delegate.addTableModelListener(listener); } public void removeTableDataListener(TableModelListener listener) { // delegate to filter target delegate.removeTableModelListener(listener); } }
(
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 jpHistoProc.setLayout(new GridBagLayout()); filtre_couleurs mon_filtre = new filtre_couleurs(new MyTableModel()); //tri de la Jtable TableSorter sorter = new TableSorter(mon_filtre); JTable table2 = new JTable(sorter); sorter.setTableHeader(table2.getTableHeader());vous avez remarqué, il y a même un truc pour trier... c'est de la Jtable de compet')
la méthode setState est changée grâce à des boutons
merci
Partager