TableRowSorter sortir du tri
Bonjour,
Voilà j'ai fait un table row sorter, il fonctionne seulement je ne peux plus décocher le champs qui subit le premier tri.
Oui parce que mon row sorter fait un tri a deux champs par exemple il trie une biliothèque par année, puis on peux retrier par prix de l'ouvrage.
dans ce cas, j'arrive pas à décocher année.
voici mon code:
Code:
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
| private class TableColumnListener implements RowSorterListener {
boolean triee;
private List<SortKey> sortedKeys;
public TableColumnListener() {
sortedKeys = new ArrayList<SortKey>();
}
@SuppressWarnings("unchecked")
@Override
public void sorterChanged(RowSorterEvent e) {
if(e.getType() == Type.SORT_ORDER_CHANGED){
int lastColumn = table.getTableHeader().columnAtPoint(table.getTableHeader().getMousePosition());
SortKey monterKey = new SortKey(lastColumn, SortOrder.ASCENDING);
SortKey descendreKey = new SortKey(lastColumn, SortOrder.DESCENDING);
if((sortedKeys.contains(monterKey)||sortedKeys.contains(descendreKey))){
if(triee){//triee a une valeur false
if(sortedKeys.contains(monterKey))
sortedKeys.set(sortedKeys.indexOf(monterKey),new SortKey(monterKey.getColumn(),SortOrder.DESCENDING));
else if (sortedKeys.contains(descendreKey))
sortedKeys.set(sortedKeys.indexOf(descendreKey),new SortKey(descendreKey.getColumn(),SortOrder.ASCENDING));
}
triee = !triee;//pour que le booleen triee ait une valeur false, pour faire le tri inverse
}else{
sortedKeys.add(descendreKey);
}
table.getRowSorter().setSortKeys(sortedKeys);
((TableRowSorter<TableModel>) table.getRowSorter()).setMaxSortKeys(table.getColumnCount());
}
}
} |
Je me doute que c'est l'affaire d'une ligne mais je cale :S