📜  javafx 将事件处理程序添加到按钮 - Java (1)

📅  最后修改于: 2023-12-03 15:16:03.714000             🧑  作者: Mango

JavaFX 将事件处理程序添加到按钮

JavaFX 是一种用于创建丰富和交互式用户界面的 GUI 库。JavaFX 提供了一些 UI 控件,如按钮、文本框、标签、表格等,并且支持事件处理程序。在本文中,我们将探讨如何在 JavaFX 应用程序中将事件处理程序添加到按钮。

准备工作

在添加事件处理程序之前,需要进行一些准备工作。首先,您需要安装 JavaFX 并设置类路径。其次,您需要创建一个 JavaFX 应用程序。在这个应用程序中,您可以添加按钮并应用样式,以使其看起来更加引人注目。以下是一个简单的 JavaFX 应用程序,其中包含一个按钮:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class JavaFXExample extends Application {

   @Override
   public void start(Stage primaryStage) {
      Button btn = new Button();
      btn.setText("Click me!");

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

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

      primaryStage.setTitle("JavaFX Example");
      primaryStage.setScene(scene);
      primaryStage.show();
   }

   public static void main(String[] args) {
      launch(args);
   }
}
添加事件处理程序

要为按钮添加事件处理程序,您需要使用 setOnAction 方法并将 EventHandler 传递给它。您可以使用 lambda 表达式或内部类创建 EventHandler。以下是使用 lambda 表达式创建 EventHandler 的示例:

btn.setOnAction(event -> {
    System.out.println("Hello, World!");
});

以上代码将在按钮被点击时打印 "Hello, World!"。

以下是使用内部类创建 EventHandler 的示例:

btn.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        System.out.println("Hello, World!");
    }
});

以上代码与使用 lambda 表达式的代码是等效的,只是使用的是不同的语法。

完整示例

下面的代码演示了如何将事件处理程序添加到按钮:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class JavaFXExample extends Application {

   @Override
   public void start(Stage primaryStage) {
      Button btn = new Button();
      btn.setText("Click me!");

      // 使用 lambda 表达式创建 EventHandler
      btn.setOnAction(event -> {
          System.out.println("Hello, World!");
      });

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

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

      primaryStage.setTitle("JavaFX Example");
      primaryStage.setScene(scene);
      primaryStage.show();
   }

   public static void main(String[] args) {
      launch(args);
   }
}

在此示例中,我们使用 lambda 表达式创建了 EventHandler,当按钮被点击时会打印 "Hello, World!"。