我有一個JXTable與自定義表模型。我用自定義的HighlightPredicate添加了2個ColorHighlighter。JXTable - 如何在排序表上更新熒光筆
問題是當我點擊列標題時,表格對行進行排序,但是熒光筆仍保留舊視圖。
如何在排序表後更新高亮狀態?
我有一個JXTable與自定義表模型。我用自定義的HighlightPredicate添加了2個ColorHighlighter。JXTable - 如何在排序表上更新熒光筆
問題是當我點擊列標題時,表格對行進行排序,但是熒光筆仍保留舊視圖。
如何在排序表後更新高亮狀態?
正如@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()函數。
已將視圖索引轉換爲模型'model int modelRow = convertRowIndexToModel(row)',也許works,可能不取決於SwingX版本, – mKorbel
還有一些其他問題,最好可以發佈[SSCCE](http: /sscce.org/),簡短,可運行,可編譯,適用於潛在的應答者和未來的讀者 – mKorbel
謝謝,我今天晚些時候會添加一個簡單的例子。 – drzymala