微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java addActionListener,正在发生多个实例

如何解决Java addActionListener,正在发生多个实例

当我尝试对comboBox_0执行操作时,它将打印“红色”并将在comboBox_1上选择的项更改为“ apple”,但是它也会为comboBox_1生成操作事件,并且还将打印“蓝色”。

我该如何执行此操作,以便程序不会将更改comboBox_1项目视为生成操作事件。我不需要它来打印“蓝色”,只需要打印“红色”并更改为“苹果”即可。

java是否可以区分用户执行的操作和程序本身?

抱歉,我是该领域的新手,我无法检查他们讨论ActionEvent的消息源。

这是示例:

public void actionPerformed(ActionEvent e) 
{
    if(e.getSource()==comboBox_0)
    {
        System.out.println("red");
        comboBox_1.setSelectedItem("apple");
    }
    else if(e.getSource()==comboBox_1)
    {   
        System.out.println("blue");
    }
    else if(e.getSource()==comboBox_2)
    {
        System.out.println("green");
    }
}

解决方法

您正在发起一个事件,但是同时您不想使用它。在程序中输入标志。使用这个:

private boolean flag = false;
public void actionPerformed(ActionEvent e)
{
    if(e.getSource()==comboBox_0)
    {
        System.out.println("red");
        comboBox_1.setSelectedItem("apple");
        flag = true;
    }
    else if(e.getSource()==comboBox_1)
    {
        if(flag){
            flag = false;
            return;
        }
        System.out.println("blue");
    }
    else if(e.getSource()==comboBox_2)
    {
        System.out.println("green");
    }
}

不幸的是,无法区分事件源(软件或用户定义的)。但这不是必需的。如果存在这样的实现,则在任何情况下都将其简化为“标志”。您可以将boolean或Emun用作标志。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。