カスタムテーブルモデルのJXTableがあります。カスタムHighlightPredicateで2つのColorHighlighterを追加しました。
問題は、列ヘッダーをクリックすると、テーブルが行を並べ替えますが、蛍光ペンは古いビューのままです。
テーブルを並べ替えた後、ハイライトの状態を更新するにはどうすればよいですか?
カスタムテーブルモデルのJXTableがあります。カスタムHighlightPredicateで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オブジェクトを返します。StanTableRowオブジェクトにはisSpakowany ()関数があります。