Java JXTable-如何在对表进行排序时更新Highlighter
我有一个带有自定义表格模型的JXTable。我添加了2个彩色荧光灯和定制荧光灯 问题是,当我单击列标题时,表会对行进行排序,但高亮显示的行仍然与旧视图相同Java JXTable-如何在对表进行排序时更新Highlighter,java,swing,swingx,jxtable,tablerowsorter,Java,Swing,Swingx,Jxtable,Tablerowsorter,我有一个带有自定义表格模型的JXTable。我添加了2个彩色荧光灯和定制荧光灯 问题是,当我单击列标题时,表会对行进行排序,但高亮显示的行仍然与旧视图相同 如何在对表排序后更新高亮显示的状态?正如@kleopatra提到的,我查看了我的谓词: HighlightPredicate spakowany = new HighlightPredicate() { @Override public boolean isHighlighted(Component r
如何在对表排序后更新高亮显示的状态?正如@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;
}
};
现在是:
int rowIndex = adapter.convertRowIndexToModel(adapter.row);
现在它可以工作了
StanTableModel是我的自定义表格模型。它有getRow函数并返回一个StanTableRow对象,该对象又有isSpakowany函数。将视图索引转换为模型int modelRow=convertRowIndexToModelrow,可能有效,可能不取决于SwingX版本,还有一些其他问题,最好是发布一个短、可运行、可编译的,对于潜在的回答者和未来读者,谢谢你,我将在今天晚些时候添加一个简单的例子。显示你用来控制高亮的谓词你发现问题:-考虑用正确的工作行来改变代码片段,这是一个转换的ROWEXECK,否则就有点混乱了。@kleopatra有没有其他方法,也就是说HighlightPredicate和getTableModel,不能是脆弱的???
int rowIndex = adapter.convertRowIndexToModel(adapter.row);