如何确定是从代码还是由用户触发JComboBox ActionListener

时间:2014-10-25 06:40:05

标签: java swing actionlistener

如何确定JComboBox触发的ActionEvent是由用户从GUI引起的,还是由代码调用comboBox.setSelectedItem("something")引起的?或者从任何其他事件?

1 个答案:

答案 0 :(得分:0)

使用布尔变量来跟踪您自己更改值的时间:

private JComboBox<String> comboBox;
private boolean comboBoxChangedFromCode = false;

更改值时设置该变量:

comboBoxChangedFromCode = true;
comboBox.setSelectedItem(...);
comboBoxChangedFromCode = false;

检查组合框的ActionListener中的值:

public void actionPerformed(ActionEvent e) {
    if (comboBoxChangedFromCode) {
        ...
    } else {
        ...
    }
}