私はListSelectionModelとListSelectionListenerを持つJTableを持っています。ListSelectionModelとリスナー
選択モデルはJTablesコンストラクタで設定されている:lsm.getSelectionModel()
とのListSelectionListenerは、公開メソッドを介して設定されている:
public void setListSelectionListener(ListSelectionListener l){
lsm.addListSelectionListener(l);
}
コントローラクラスから呼び出さ:
view.setTableSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent e){
if (!e.getValueIsAdjusting()) {
int viewRow = e.getFirstIndex();
System.out.println(viewRow + " is selected");
}
}
});
ためリスナーは別のクラスで作成されています。私はJTableのgetSelectedRow();
メソッドを使用できませんが、ListSelectionEventオブジェクトのgetFirstIndex();
は明らかに現在の選択を取得しません。
だから私は今、現在の選択を取得するための正しい方法のように思えint viewRow = ((ListSelectionModel)e.getSource()).getLeadSelectionIndex());
んを使用していますか?それは働いているようですが、これが悪い方法かどうかはわかりません。ありがとう