6

我正在使用 JXTable,并且我知道如何基于 DefaultRenderers for JTable 执行此操作,但我想知道如何以基于 HighlighterPipeline 的 JXTable 友好的方式执行此操作。

我有一个显示在表格中的对象列表,每一行代表一个对象。我想将显示某种类型的对象的行着色为不同的颜色。

看起来我应该使用ColorHighlighter。但我找不到这方面的例子,除了像“每隔一行着色”这样的简单荧光笔或类似的东西。

我需要行号,因为在 JTable/TableModel 范例中没有“行对象”之类的东西,但如果我能做到这一点,我可以轻松测试谓词并返回真/假来告诉荧光笔是否启动.

有人可以帮我找出正确的方向来让它发挥作用吗?

4

1 回答 1

4

没关系,我想通了。很难弄清楚正确使用 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);
于 2012-03-20T19:22:18.650 回答