如何解决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 举报,一经查实,本站将立刻删除。