使用多个actionlistener作为按钮

时间:2014-08-31 11:22:54

标签: java swing actionlistener

我总是使用一个ActionListenr作为按钮,但我发现可以为一个组件分配多个动作侦听器。我们如何做到这一点以及它的用途 提前致谢

2 个答案:

答案 0 :(得分:4)

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

如果您需要执行一些不一定相关的操作,这将非常有用。例如,更改按钮的背景颜色与在Logger中附加操作与通知控制器按下按钮等等...

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

最后,一些对象在实例化时已经有了侦听器(JButton有一个默认的FocusListener,JScrollPane是一个默认的MouseWheelListener等)。这允许您向组件添加其他行为,而不会覆盖以前的行为。

答案 1 :(得分:2)

  

我们如何做到这一点

这是一个简单的部分,创建ActionListener的多个实例并使用addActionListener。人们会认为它们都是不同的......

  

以及它的用途

这是一个更难的问题。可以假设当您想要将更新的逻辑应用于流程但不从现有功能扩展时,您将使用多个侦听器......

我们假设您有登录表单。你有一个"登录"按钮。您编写ActionListener来收集所需的详细信息并进行验证。

稍后,您决定在此过程中应禁用该按钮。通常情况下,您会将该功能添加到原始代码中,但出于任何原因(它不是您的代码等),您无法做到。

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

作为一个例子......