我有一个带有自定义表模型的 JXTable。我添加了 2 个带有自定义 HighlightPredicate 的 ColorHighlighter。
问题是当我单击列标题时,表格对行进行排序,但荧光笔仍然与旧视图一样。
排序表格后如何更新高亮状态?
我有一个带有自定义表模型的 JXTable。我添加了 2 个带有自定义 HighlightPredicate 的 ColorHighlighter。
问题是当我单击列标题时,表格对行进行排序,但荧光笔仍然与旧视图一样。
排序表格后如何更新高亮状态?
正如@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()函数。