2017-08-14 200 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。