Domanda

Informazioni - per una migliore formattazione, ho usato la formattazione del codice in tutta la pubblicazione.

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?
È stato utile?

Soluzione

Potresti semplicemente aggiungere un secondo evidenziatore?

jxTable.getHighlighters().addHighlighter()

Uno che si applicherebbe solo quando JXtable verrà effettivamente filtrato.

Se ciò non è possibile, poiché una volta che una riga è stata evidenziata, gli altri evidenziatori non possono essere chiamati, è possibile definire un controller che:

a) ha un propertyChangeListner nella tabella, in ascolto dello stato filtrato

b) ha il Predicato speciale con l'insieme di righe e l'evidenziatore

c) su propertyChange controlla la riga, attiva o disattiva il predicato dell'evidenziatore tra MAI e la tua abitudine. Il cambio di proprietà dell'evidenziatore attiverà la riverniciatura

Forzare una riverniciatura è fondamentalmente ciò che fa l'esempio HighlighterClientVisualCheck nel pacchetto test.org.jdesktop.swingx.renderer.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top