2014-08-31 60 views
2

我总是使用一个ActionListenr作为按钮,但是我发现一个组件可以被分配多个动作侦听器。我们怎样才能做到这一点,什么是使用它 在此先感谢使用多个actionlistener作为按钮

+1

''我们如何做到这一点......“ - 只需将一个以上的ActionListener添加到JButton。 '“......它有什么用处” - - 无论你想用什么。 – 2014-08-31 11:26:43

回答

2

我们怎样才能做到这一点

这是比较容易的部分,创造ActionListener的多重实例,并使用addActionListener。人们会认为他们都是不同的...

,什么是使用它

这是一个更难回答的问题。人们可能会认为,如果您想将更新的逻辑应用于流程但不能扩展现有功能,则可以使用多个侦听器...

假设您有一个登录表单。你有一个“登录”按钮。你写一个ActionListener来收集所需的细节并验证它们。

之后,您决定在该过程中禁用该按钮。通常情况下,您可以将该功能添加到原始代码中,但由于某种原因(不是您的代码等),您无法这么做。

您可以创建另一个ActionListener,其唯一目的是在按下按钮时禁用按钮。

举个例子...

3
c.addActionListener(actionlistener1); 
c.addActionListener(actionlistener2); 

,如果你需要做的不一定相关的几个动作是非常有用的。例如,改变一个按钮的背景颜色与在Logger中追加动作,并通知控制器该按钮已被按下,等等。

这允许模块化:每个actionListener可以处理一个非常特定的任务对于一组组件。例如,您可以为所有按钮编写默认的actionListener,并为具有相同行为的一组按钮编写特定的按钮。

最后,有些对象在实例化时已经有监听器(JButton有默认的FocusListener,JScrollPane默认为MouseWheelListener等)。这使您可以将其他行为添加到组件中,而不会覆盖以前的组件。