Java JXTreeTable:保留一组高亮显示的行

Java JXTreeTable:保留一组高亮显示的行,java,highlighting,jxtreetable,Java,Highlighting,Jxtreetable,我有一组行和一些有趣的数据。我需要向用户指出它们 1。因此,我可以保存行号并在荧光笔的帮助下高亮显示它们。但当我展开/折叠树时,行号会发生变化,高亮显示会将这些行转移到另一个无趣的行 2。我可以使用多重选择来选择所有这些行,然后阻止选择(截取选择事件)以无法重置选择。但是阻止选择是个坏主意 3。要解决第一个变体的问题,可以尝试跟踪展开/折叠项目的数量。但是在这个例子中,当我们折叠一个多层扩展的子树时,我被这个例子打断了。我不知道如何找到真正删除了多少行 4。我不想遍历所有树并检查数据值 我需要以

我有一组行和一些有趣的数据。我需要向用户指出它们

1。因此,我可以保存行号并在荧光笔的帮助下高亮显示它们。但当我展开/折叠树时,行号会发生变化,高亮显示会将这些行转移到另一个无趣的行
2。我可以使用多重选择来选择所有这些行,然后阻止选择(截取选择事件)以无法重置选择。但是阻止选择是个坏主意
3。要解决第一个变体的问题,可以尝试跟踪展开/折叠项目的数量。但是在这个例子中,当我们折叠一个多层扩展的子树时,我被这个例子打断了。我不知道如何找到真正删除了多少行
4。我不想遍历所有树并检查数据值

我需要以某种方式实现用于选择的相同机制:我们折叠/展开行,但选择是固定的。但我不知道怎么做

如中所述,在创建HighlightPredicate时,不需要关注行的索引。只需检查值,这可能会很有趣

final JXTreeTable treeTable = new JXTreeTable();
final int interestingColumn = 3;
final Color interestingCellBackgroundColor = Color.GREEN;
final Color interestingCellForegroundColor = Color.BLACK;
treeTable.addHighlighter(new ColorHighlighter(new HighlightPredicate() {
        public boolean isHighlighted(Component rend, ComponentAdapter adapt) {
            Object value = adapt.getValue(interestingColumn);
            return isValueInteresting(value));
        }
    }, interestingCellBackgroundColor, interestingCellForegroundColor));