Question

Info - pour un meilleur formatage, j'ai utilisé le formatage du code tout au long de la publication.

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?
Était-ce utile?

La solution

Pourriez-vous simplement ajouter un deuxième surligneur?

jxTable.getHighlighters().addHighlighter()

Celui qui ne s’applique que lorsque la JXtable est effectivement filtrée.

Si cela n'est pas possible, car une fois qu'une ligne a été mise en surbrillance, il est possible que les autres surligneurs ne soient pas appelés, vous pouvez définir un contrôleur qui:

a) a un propertyChangeListner dans la table, à l'écoute de l'état filtré

b) a le prédicat spécial avec le jeu de lignes et le surligneur

c) dans propertyChange, vérifiez la ligne, basculez le prédicat du surligneur entre NEVER et votre coutume, selon le cas. Le changement de propriété du surligneur va déclencher le repeinte

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top