如何区分用户选择项目和getSelectedValue()?

时间:2012-01-23 14:53:10

标签: java swing list listener

在执行valueChanged ListSelectionListener方法期间,有没有办法告诉用户是否点击了JList,还是其他代码调用了setSelectedIndex

1 个答案:

答案 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) {
        ...
    }
}