3 种在 Java Swing 中添加 ActionListener 的方法

在构建GUI时,该界面需要一种侦听和响应事件的方式。当用户与GUI交互时,会触发事件,例如按下按钮和插入文本。Java Swing中的事件类型之一是ActionEvent。生成ActionEvent的常用组件是JButton,它只是一个按下按钮即可生成事件的按钮。本文旨在说明可以将ActionListener添加到组件的三种不同方式。

组件作为ActionListener

这是组件本身侦听动作的时候。为此,只需在组件中实现ActionListener接口,例如:

<span style="color:#f8f8f2"><span style="color:#eff0f9"><code>public class ButtonExample extends JButton implements ActionListener {

    public ButtonExample() {
        addActionListener(this);
    }

    public void actionPerformed(ActionEvent ae) {
        //handle event here
    }

}
</code></span></span>

因此,实现ActionListener的组件将同时成为源和侦听器。如果事件相对简单且内部发生(例如,未连接多个组件),则可能需要使用此方法。

这种添加ActionListener的方法违反了单一职责原则,因为组件既负责创建事件,又负责处理事件。

内部ActionListener

当您使用'new'关键字为每个组件创建一个新的ActionListener时,就使用此方法。

<span style="color:#f8f8f2"><span style="color:#eff0f9"><code>component.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent ae) {
            //handle event here
        }
});
</code></span></span>

此实现非常适合简单的侦听器,并且还将侦听器与组件分开。如果尝试将ActionListeners添加到子组件(例如,JPanel的子组件),请避免这种情况。这可能会导致代码混乱,因为每个组件都在创建自己的ActionListener版本。

单独的ActionListener

此技术要求您创建一个单独的类来实现ActionListener。需要此ActionListener的组件只需创建此类的新实例并将其添加。

<span style="color:#f8f8f2"><span style="color:#eff0f9"><code>public class ButtonExample extends JButton {

      public ButtonExample() {
          addActionListener(new ButtonHandler());
      }   
}

public class ButtonHandler implements ActionListener {
      public ButtonHandler() {

      }   

      public void actionPerformed(ActionEvent ae) {
          //handle event here
      }   
}
</code></span></span>

这是添加ActionListener的最干净的方法。它将组件与侦听器分离,创建可在不同类之间使用的可重用侦听器,并允许组件之间进行复杂的交互。

原文链接:https://dev.to//aussieguy/three-ways-to-add-an-actionlistener-in-java-swing-19h5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值