Lambda Expressions in Java 8 for ActionListener

Lambda Expressions in Java 8
Let us see Lambda expressions in Java which are already introduced in C#. Lambda expressions might be quite interesting and easy if you understand and concentrate a bit. The use of lambda expressions is that we don't need to know what is the method. You'll have to note that it is not applicable for functions having different names but with same parameters instead it is only applicable only for functions that are overloaded. These lambda expressions are used in the following program in implementing interface. See how easy implementing it was made.


import javax.swing.*;
import java.awt.*;
class ButtonAction extends JFrame
{
JButton b;
    public ButtonAction()
    {
    setTitle("Button Action");
    setSize(400,400);
    setVisible(true);
    setLayout(new FlowLayout());
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    b=new JButton("Button");
    b.addActionListener(
        ae -> {System.out.println("You clicked the button");}
        );
    add(b);
    }
    public static void main(String args[])
    {
    new ButtonAction();
    }  
}

Output


You clicked the button

Understanding the code

b.addActionListener(
ae -> {System.out.println("You clicked the button");}
); Notice that there is no new ActionListener() and no public void actionPerformed(ActionEvent ae). Here the compiler understands that there is only one method in the ActionListener interface and that takes only one parameter. So obviously, it decides (finalizes) that the ae is a reference to ActionEvent. The code written in the actionPerformed(ActionEvent) is enclosed as usual in the curly braces. For to be sure that ae is the reference to ActionEvent consider calling getSource() method. One more advantage is that we do not need to import the ActionListener or ActionEvent from java.awt.event package. Note that these lambda expressions work only in Java 8 (may be in the future). If there are any queries, let me know!


Posted by at on

Tags: Java 8, Lambda Expressions, Swing Event Handling,