2017-08-14 137 views
0

我有一個ListSelectionModel和ListSelectionListener的JTable。ListSelectionModel和監聽器

選擇模型在JTable中構造方法設置:lsm.getSelectionModel()

和ListSelectionListener它通過公用方法設置:

public void setListSelectionListener(ListSelectionListener l){ 
     lsm.addListSelectionListener(l); 
    } 

從Controller類叫做:

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。