2017-08-14 11 views
0

私は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());

んを使用していますか?それは働いているようですが、これが悪い方法かどうかはわかりません。ありがとう

答えて

0

getMinSelectionIndex()とgetMaxSelectionIndex()のみが動作し、選択したインデックスの最小値と最大値をそれぞれ返します。リード/アンカー選択インデックスは、選択された行がない場合でも> = 0になることがあります。

関連する問題