例如,我有一个名为across_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()“行打印selected_value的2个值,而我只在JList中的索引上单击了1次?
发布于 2013-04-19 23:22:39
由ui-delegate注册的listSelectionListener将选择更改标记为正在mousePressed上进行,并在mouseReleased中重置该标志,使其成为最终更改。如果希望仅对已完成的更改做出反应,则可以查询valueIsAdjusting属性,如果为true,则不执行任何操作:
class AcrossListHandler implements ListSelectionListener {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) return;
// do stuff
}
}https://stackoverflow.com/questions/16036391
复制相似问题