ListSelectionModel和监听器

时间:2017-08-14 17:09:29

标签: java swing jlist listselectionlistener

我有一个带有ListSelectionModel和ListSelectionListener的JTable。

选择模型在JTables构造函数中设置: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());

这看起来是获得当前选择的正确方法吗?它似乎有效,但我不确定这是否是一种糟糕的做法。感谢

1 个答案:

答案 0 :(得分:0)

只有getMinSelectionIndex()和getMaxSelectionIndex()有效,它们分别返回所选索引的最小值和最大值。即使没有选定的行,引导/锚点选择的索引也可以> = 0。