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);
Другие вопросы по тегам