JXTable - Marcador após a tabela de filtragem
-
10-07-2019 - |
Pergunta
Info -. Para uma melhor formatação, eu usei o código de formatação em todo o destacamento
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?
Solução
Você poderia apenas adicionar um segundo marcador?
jxTable.getHighlighters().addHighlighter()
Um que só se aplicaria em si quando o JXtable é efetivamente filtrada.
Se isso não for possível, porque uma vez que uma linha foi destacado, os outros marcadores podem não ser chamado, você poderia definir um controlador que:
a) tem uma propertyChangeListner para a mesa, ouvindo estado filtrado
b) tem o predicado especial com o conjunto de linhas e o marcador
c) no propertyChange verificar a linha, toggle predicado do marcador entre NUNCA e seu costume, conforme apropriado. alteração da propriedade do marcador irá acionar o repaint
Forçar uma repaint é basicamente o que faz a amostra HighlighterClientVisualCheck no pacote test.org.jdesktop.swingx.renderer.