我正在使用JXTable,我知道如何基于JTable的DefaultRenderers执行此操作,但我想知道如何以基于HighlighterPipeline的JXTable友好的方式执行此操作。
我有一个表格中显示的对象列表,每行代表一个对象。我想将显示某种类型的对象的行着色为不同的颜色。
看起来我应该使用ColorHighlighter。但我找不到这方面的例子,除了简单的荧光笔,比如“每隔一行上色”或者其他类似的东西。
我需要行号,因为在JTable / TableModel范例中没有“行对象”这样的东西,但是如果我能做到这一点,我可以轻松地测试一个谓词并返回true / false来告诉荧光笔踢是否。
有人可以帮我找出正确的方向吗?
答案 0 :(得分:4)
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);