Hello World 计划

以下代码创建一个简单的用户界面,其中包含单个 Button,可在单击时将 String 打印到控制台。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloWorld extends Application {

    @Override
    public void start(Stage primaryStage) {
        // create a button with specified text
        Button button = new Button("Say 'Hello World'");

        // set a handler that is executed when the user activates the button
        // e.g. by clicking it or pressing enter while it's focused
        button.setOnAction(e -> {
           //Open information dialog that says hello
           Alert alert = new Alert(AlertType.INFORMATION, "Hello World!?");
           alert.showAndWait();
        });

        // the root of the scene shown in the main window
        StackPane root = new StackPane();

        // add button as child of the root
        root.getChildren().add(button);

        // create a scene specifying the root and the size
        Scene scene = new Scene(root, 500, 300);

        // add scene to the stage
        primaryStage.setScene(scene);

        // make the stage visible
        primaryStage.show();
    }

    public static void main(String[] args) {
        // launch the HelloWorld application.

        // Since this method is a member of the HelloWorld class the first
        // parameter is not required
        Application.launch(HelloWorld.class, args);
    }

}

Application 类是每个 JavaFX 应用程序的入口点。只有一个 Application 可以启动,这是使用

Application.launch(HelloWorld.class, args);

这将创建作为参数传递的 Application 类的实例,并启动 JavaFX 平台。

以下对程序员来说非常重要:

  1. 首先,launch 创建了 Application 类的新实例(在本例中为 HelloWorld)。因此 Application 类需要一个无参数构造函数。
  2. 在创建的 Application 实例上调用 init()。在这种情况下,Application 的默认实现不执行任何操作。
  3. start 用于 Appication 实例,主要 Stage(= window)被传递给方法。在 JavaFX Application 线程(Platform 线程)上自动调用此方法。
  4. 应用程序一直运行,直到平台确定关闭时间。在这种情况下,当最后一个窗口关闭时,这样做。
  5. Application 实例上调用 stop 方法。在这种情况下,Application 的实现什么都不做。在 JavaFX Application 线程(Platform 线程)上自动调用此方法。

start 方法中构建场景图。在这种情况下它包含 2 个 Nodes:一个 Button 和一个 StackPane

Button 表示 UI 中的按钮,StackPaneButton 的容器,用于确定它的位置。

创建了 Scene 来显示这些 Nodes。最后将 Scene 添加到 Stage,这是显示整个 UI 的窗口。