我有一个带有自定义表模型的jxtable。我添加了2张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() function。