JXTable - маркер после таблицы фильтрации
Информация - для лучшего форматирования я использовал форматирование кода на протяжении всей публикации.
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?
1 ответ
Не могли бы вы просто добавить второй маркер?
jxTable.getHighlighters().addHighlighter()
Тот, который применяется только тогда, когда JXtable эффективно фильтруется.
Если это невозможно, поскольку после выделения строки другие маркеры могут не вызываться, вы можете определить контроллер, который:
а) имеет свойство ChangeListner для таблицы, прослушивая отфильтрованное состояние
б) имеет специальный предикат с набором строк и маркером
c) в propertyChange проверьте строку, переключите предикат маркера между НИКОГДА и вашим обычаем в зависимости от ситуации. Изменение свойства маркера приведет к перерисовке
Принудительное перекрашивание - это, в основном, пример HighlighterClientVisualCheck в пакете test.org.jdesktop.swingx.renderer.