SwingX JXTable: используйте ColorHighlighter для раскраски строк на основе «объекта строки» - PullRequest
5 голосов
/ 20 марта 2012

Я использую JXTable, и я знаю, как это сделать на основе DefaultRenderers для JTable, но я хочу знать, как это сделать так, чтобы это было удобно для JXTable на основе HighlighterPipeline.

У меня есть список объектов, отображаемых в таблице, и каждая строка представляет один объект. Я хотел бы покрасить строки, отображающие объекты определенного типа, в другой цвет.

Похоже, я должен использовать ColorHighlighter . Но я не могу найти примеры для этого, кроме простых маркеров, таких как «цвет каждой строки» или что-то подобное.

Мне нужен номер строки, так как в парадигме JTable / TableModel нет такой вещи, как «объект строки», но если я могу это сделать, я могу легко проверить предикат и вернуть true / false, чтобы подсвечиватель выдал удар или нет.

Может кто-нибудь помочь мне определить правильное направление, чтобы заставить это работать?

1 Ответ

4 голосов
/ 20 марта 2012

не бери в голову, я понял это.Просто было сложно понять, как правильно использовать 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);
...