作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有自定义表格模型的 JXTable。我添加了 2 个带有自定义 HighlightPredicate 的 ColorHighlighter。
问题是当我单击列标题时,表对行进行排序,但荧光笔仍保留旧 View 。
对表格进行排序后如何更新突出显示的状态?
最佳答案
正如 @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() 函数。
关于java - JXTable - 如何更新对表进行排序的荧光笔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13122792/
我是一名优秀的程序员,十分优秀!