SwingX JXTable: используйте ColorHighlighter, чтобы раскрасить строки на основе "объекта строки"
Я использую JXTable, и я знаю, как сделать это на основе DefaultRenderers для JTable, но я хочу знать, как это сделать так, чтобы это было удобно для JXTable на основе HighlighterPipeline.
У меня есть список объектов, отображаемых в таблице, и каждая строка представляет один объект. Я хотел бы покрасить строки, отображающие объекты определенного типа, в другой цвет.
Похоже, я должен использовать ColorHighlighter. Но я не могу найти примеры для этого, кроме простых маркеров, таких как "цвет каждой строки" или что-то подобное.
Мне нужен номер строки, так как в парадигме JTable/TableModel нет такой вещи, как "объект строки", но если я могу это сделать, я могу легко протестировать предикат и вернуть true/false, чтобы подсвечиватель выдвинул или нет,
Может кто-нибудь помочь мне определить правильное направление, чтобы заставить это работать?
1 ответ
Не берите в голову, я понял это. Было просто трудно понять, как правильно использовать ComponentAdapter.
JXTable table = ...
final List<Item> itemList = ...
final HighlightPredicate myPredicate = new HighlightPredicate() {
@Override
public boolean isHighlighted(
Component renderer,
ComponentAdapter adapter) {
Item item = itemList.get(adapter.row);
return testItem(item);
}
public boolean testItem(Item item) { ... }
}
ColorHighlighter highlighter = new ColorHighlighter(
myPredicate,
Color.RED, // background color
null); // no change in foreground color
table.addHighlighter(highlighter);