Skip to main content

LAMBDA EXPRESSIONS FOR HANDLING EVENTS

Event handlers form the core of any application. They define what happens when you click a button, press a key, select a menu and so on.
The discussion on this site demonstrates how to use Lambda expressions to handle events. It is elegant and greatly simplifies your code.
The old way of handling a button-click looks like this:
Button btn = new Button();
btn.setText("Say 'Hello World'");

 btn.setOnAction(new EventHandler<ActionEvent>()
{

      @Override
      public void handle(ActionEvent event)
      {
          System.out.println("Hello World!");
      }
 });
The following is a Lambda expression using a "goes to" operator (->):
Button button = new Button("Click");

        button.setOnAction(value ->  {
           label.setText("Clicked!");
        });
Even more elegant:
someButton.setOnAction(evt -> someMethod())

Now a greater improvement in programming style: This last format allows you to neatly line up your event handler methods as follows:
public class Test1 extends Application
{

@Override
public void start(Stage primaryStage)
{
    Button btn = new Button();
    btn.setText("Say 'Hello World'");

    btn.setOnAction(event -> handler());

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
   primaryStage.show();
}

  public void handler()
  {
      System.out.println("Hello World!");
  }
}

Now you have no excuse to write crappy code. Be elegant and lucid and fast.

Comments

Post a Comment