1

我有一个带有自定义表模型的 JXTable。我添加了 2 个带有自定义 HighlightPredicate 的 ColorHighlighter。

问题是当我单击列标题时,表格对行进行排序,但荧光笔仍然与旧视图一样。

排序表格后如何更新高亮状态?

4

1 回答 1

0

正如@kleopatra 提到的,我查看了我的谓词:

    HighlightPredicate spakowany = new HighlightPredicate() {
        @Override
        public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
            TableModel tableModel = table.getModel();
            if (tableModel instanceof StanTableModel) {
                StanTableModel stanTableModel = (StanTableModel) tableModel;
                // int rowIndex = adapter.row;  <-  this was the issue 
                int rowIndex = adapter.convertRowIndexToModel(adapter.row);
                StanTableRow myCustomRow = stanTableModel.getRow(rowIndex);
                if ((myCustomRow.isSpakowany()) {
                    return true;
                }
            }
            return false;
        }
    };

并使用@mKorbel 的想法:

曾是:

    int rowIndex = adapter.row;

就是现在:

    int rowIndex = adapter.convertRowIndexToModel(adapter.row);

它现在有效。

StanTableModel是我的自定义表格模型。它具有getRow()函数并返回一个StanTableRow对象,该对象又具有isSpakowany()函数。

于 2012-10-29T15:35:39.263 回答