1

カスタムテーブルモデルのJXTableがあります。カスタムHighlightPredicateで2つのColorHighlighterを追加しました。

問題は、列ヘッダーをクリックすると、テーブルが行を並べ替えますが、蛍光ペンは古いビューのままです。

テーブルを並べ替えた後、ハイライトの状態を更新するにはどうすればよいですか?

4

1 に答える 1

0

@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 ()関数があります。

于 2012-10-29T15:35:39.263 に答える