SwingX JXTable:使用ColorHighlighter根据“行对象”为行着色

时间:2012-03-20 17:17:34

标签: java jtable renderer swingx swingx-highlighter

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

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

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

我需要行号,因为在JTable / TableModel范例中没有“行对象”这样的东西,但是如果我能做到这一点,我可以轻松地测试一个谓词并返回true / false来告诉荧光笔踢是否。

有人可以帮我找出正确的方向吗?

1 个答案:

答案 0 :(得分: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);