在执行valueChanged
ListSelectionListener
方法期间,有没有办法告诉用户是否点击了JList,还是其他代码调用了setSelectedIndex
?
答案 0 :(得分:2)
AFAIK,没有。但是如果目标是仅在用户选择时执行某些操作,则可以在选择代码中的索引之前设置一个标志,以表示选择不是来自用户,或者删除侦听器并在之后添加:
private void selectIndexInList(int index) {
this.selectionComesFromTheCode = true;
try {
list.setSelectedIndex(index);
}
finally {
this.selectionComesFromTheCode = false;
}
}
@Override
public void valueChanged(ListSelectionEvent e) {
if (!this.selectionComesFromTheCode) {
...
}
}