如何在 Java 中使用 lambda 表达式来实现侦听器?


当我们在 Java 侦听器中使用 lambda 表达式时,我们不必明确实现 ActionListener 接口。相反,我们可以使用以下语法。

语法

button.addActionListener(e -> { // some statements });

ActionListener 接口仅定义了一个方法 actionPerformed()。它是一个 function interface,这意味着可以使用 lambda 表达式来替换代码。

示例

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class LambdaListenerTest extends JFrame {
   public static void main(String args[]) {
      new LambdaListenerTest();
   }
   private JButton button;
   public ClickMeLambdaTest() {
      setTitle("Lambda Expression Test");
      button = new JButton("Click Me!");
      button.addActionListener(ae -> button1Click());   // lambda expression for ActionListener 

      getContentPane().add(button, BorderLayout.NORTH);
      setSize(450, 300);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setVisible(true);
   }
   private int clickCount = 0;
   public void button1Click() {
      clickCount++;
      if(clickCount == 1)
         button.setText("Clicked!!!");
      else
         button.setText("Clicked " + clickCount + " times!!!");
   }
}

输出


更新于:10-Jul-2020

1K+ 浏览

开启你的 职业 生涯

完成课程可获得认证

开始
广告