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

标签 java swing actionlistener

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

最佳答案

使用 boolean 变量来跟踪您自己何时更改值:

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

在更改值时设置该变量:

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

检查组合框的 ActionListener 中的值:

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

关于java - 如何确定 JComboBox ActionListener 是由代码触发还是由用户触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26559951/

相关文章:

java - 安卓:java.text.ParseException:无法解析的日期

java - 使用递归查找字符串是否具有所有唯一字符

java - 如何使用 Eclipse 模板插入包声明?

java - 从 ActionListener 调用的方法获取返回值

java - 为什么我的 "Save"按钮不起作用?

java - 如何在java集合中做内循环?

Java JFrame 放在前面

Java Graphics2D 绘图到 BufferedImage

java - 不让用户散焦框架?

android - 设置监听器接口(interface)时出现 ClassCastException