2008-11-22 14 views
4

Info - pour un meilleur formatage, j'ai utilisé le formatage du code tout au long de la publication.JXTable - Surligneur après table de filtrage

Hi, 

I have a highlighted JXTable. Rows are highlighted, depending on the value 
of a specific column (c2). Everytime the value of column c2 changes, the color 
is switched from white to grey or from grey to white. 

Example  
    c0 c1 c2 c3 
    1 | aaa | ab | dd 
    2 | aaa | ab | ee 
    3 | aaa | cd | ff 
    4 | aaa | cd | gg 
    5 | bbb | ef | dd 

Colors are like this: 
1,2 -> white 
3,4 -> grey 
5 -> white 

If I now filter for 'dd', my table looks like this 

    c0 c1 c2 c3 
    1 | aaa | ab | dd 
    5 | bbb | ef | dd 

And the colors are like this: 
1 -> white 
5 -> white 

But I want the table to change the color of row 5, because the previous 
value in c2 was different. 
See my Problem? How can I apply the highlighter again, on my JXTAble, 
after filtering? Or in other words, how can I highlight only the filtered 
values? 

Répondre

2

Pourriez-vous ajouter un deuxième surligneur?

jxTable.getHighlighters().addHighlighter() 

Un qui ne s'appliquerait que lorsque le JXtable est efficacement filtré.

Si cela est impossible, car une fois qu'une ligne a été mis en évidence, les autres surligneurs ne peuvent pas être appelés, vous pouvez définir un contrôleur qui:

a) a une propertyChangeListner à la table, écoutant état filtré

b) a la prédicats spéciale avec l'ensemble des lignes et le surligneur

c) sur la ligne propertyChange vérifier, basculer le prédicat du surligneur entre jamais et votre mesure, selon le cas. Le changement de propriété du surligneur déclenche le repeint

Forcer un repeint est fondamentalement ce que fait l'exemple HighlighterClientVisualCheck dans le package test.org.jdesktop.swingx.renderer.