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

Java 如何确定JComboBox ActionListener是由代码触发还是由用户触发,java,swing,actionlistener,Java,Swing,Actionlistener,如何确定JComboBox触发的ActionEvent是由GUI中的用户引起的,还是由代码中调用comboBox.setSelectedItem(“某物”)引起的?或任何其他事件?使用布尔变量跟踪您自己更改值的时间: private JComboBox<String> comboBox; private boolean comboBoxChangedFromCode = false; 选中组合框的ActionListener中的值: public void actionPerfor

如何确定JComboBox触发的ActionEvent是由GUI中的用户引起的,还是由代码中调用
comboBox.setSelectedItem(“某物”)
引起的?或任何其他事件?

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

private JComboBox<String> comboBox;
private boolean comboBoxChangedFromCode = false;
选中组合框的ActionListener中的值:

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

因为设置了一堆内部标志,所以你们不能,这一点让我面临严重的问题。我收到了用户消息,并提供了一个可运行的示例来演示这个问题
public void actionPerformed(ActionEvent e) {
    if (comboBoxChangedFromCode) {
        ...
    } else {
        ...
    }
}