0

JTable 内の一部の列のみが選択可能であることを確認するにはどうすればよいですか (つまり、それらの列が ListSelectionListener にルーティングされることを意味します)。

次のようにリスナーを追加しました。

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {...});
4

1 に答える 1

3

最も簡単な解決策は、独自の選択モデルを作成することです。

table.getColumnModel().setSelectionModel(new DefaultListSelectionModel() {
    private boolean isSelectable(int index0, int index1) {
        // TODO: Decide if this column index is selectable
        return true;
    }

    @Override
    public void setSelectionInterval(int index0, int index1) {
        if(isSelectable(index0, index1)) {
            super.setSelectionInterval(index0, index1);
        }
    }

    @Override
    public void addSelectionInterval(int index0, int index1) {
        if(isSelectable(index0, index1)) {
            super.addSelectionInterval(index0, index1);
        }
    }
});

列の選択をリッスンする場合は、リスナーを列モデルの選択モデル(テーブルの選択モデルではない)に追加することにも注意してください。

于 2012-12-13T21:57:48.383 に答える