JTable 内の一部の列のみが選択可能であることを確認するにはどうすればよいですか (つまり、それらの列が ListSelectionListener にルーティングされることを意味します)。
次のようにリスナーを追加しました。
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {...});
JTable 内の一部の列のみが選択可能であることを確認するにはどうすればよいですか (つまり、それらの列が ListSelectionListener にルーティングされることを意味します)。
次のようにリスナーを追加しました。
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {...});
最も簡単な解決策は、独自の選択モデルを作成することです。
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);
}
}
});
列の選択をリッスンする場合は、リスナーを列モデルの選択モデル(テーブルの選択モデルではない)に追加することにも注意してください。