有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

ListSelectionListener中的java方法getSelectionIndex()

例如,我有一个名为Cross_list的JList,其中包含一个项目列表,现在我向该JList添加了一个ListSelectionListener

考虑到这些代码行:

class AcrossListHandler implements ListSelectionListener {
    @Override
    public void valueChanged(ListSelectionEvent e) {
        JList lsm = (JList) e.getSource();
        int selected_index = lsm.getMaxSelectionIndex();            
            if (selected_index >= 0){
                System.out.println(selected_index);
            }
        }  
     }       
}

我有一个问题:为什么行“System.out.println()”只需在JList中的索引上单击1次,就可以打印所选值的2个值


共 (1) 个答案

  1. # 1 楼答案

    ui委托注册的listSelectionListener在mousePressed上将选择更改标记为正在进行中,并在MouseRelease中重置该标记,使其成为最终标记。如果只想对最终确定的更改作出反应,可以查询valueIsAdjusting属性,如果为true,则不执行任何操作:

    class AcrossListHandler implements ListSelectionListener {
    
        @Override
        public void valueChanged(ListSelectionEvent e) {
            if (e.getValueIsAdjusting()) return;
            // do stuff
        }
    }