【发布时间】:2012-02-10 23:00:43
【问题描述】:
在我的程序中,我有几个摆动组件,我遇到的一个问题是,如果触发了动作事件,我的 ActionPerformed 方法会触发两次。我最终发现这是由于我的 confirmBtn(JButton) 意外添加了两次 ActionListener。
但是,有一件事我不明白,而且我对 Java 还很陌生,所以请原谅我提出一些看似显而易见的问题:
我已经为我的所有组件提供了这样的动作监听器:
confirmBtn.addActionListener(this);
然后在我的ActionPerformed(ActionEvent e) 方法中引用它们,如下所示:
if(e.getSource() == confirmBtn)
Execute code....
我的问题是,为什么不小心给一个 组件一个额外的ActionListener,它是否会影响在ActionPerformed 方法中调用的所有其他组件,使它们也被触发两次?这与我给每个组件 ActionListeners 的方式有关吗?
【问题讨论】:
-
另外,如果问题标题措辞不正确,我很抱歉,因为很难尝试解释
-
那么您的意思是,不小心将同一个动作监听器添加到同一个组件两次(导致它被调用两次),您添加到其他组件的所有其他动作监听器也被触发了两次?跨度>
-
是的,我的问题是为什么会这样,我不明白它背后的逻辑。
-
@GuillaumePolet 感谢您的回复,我是一名学习 Java 的学生,现在才刚刚掌握基本元素。我的问题是我有一个 addBookingButton 并且它的事件被触发了两次。当我为 confirmBtn (完全不相关的按钮)删除额外的 actionListener 时,addBookingButton 事件只触发了一次,所以我认为这就是原因。你说得对,我可能不应该太快得出这个结论,但这是我能想到的唯一合乎逻辑的事情。