Вопрос

Информация - для лучшего форматирования я использовал форматирование кода на протяжении всей публикации.

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?
Это было полезно?

Решение

Не могли бы вы просто добавить второй маркер?

jxTable.getHighlighters().addHighlighter()

Тот, который применяется только тогда, когда JXtable эффективно фильтруется.

Если это невозможно, поскольку после выделения строки другие маркеры могут не вызываться, вы можете определить контроллер , который:

a) имеет свойствоChangeListner для таблицы, прослушивающее отфильтрованное состояние

б) имеет специальный предикат с набором строк и подсветкой

в) в propertyChange проверьте строку, переключите предикат маркера между НИКОГДА и вашим обычаем в зависимости от ситуации. Изменение свойства маркера приведет к перерисовке

Принудительное перекрашивание - это, в основном, пример HighlighterClientVisualCheck в пакете test.org.jdesktop.swingx.renderer.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top