javafx 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) {
        // 创建具有指定文本的按钮
        Button button = new Button("Say 'Hello World'");

        // 设置当用户激活按钮时执行的处理程序
        // 例如,通过单击它或在焦点对准时按Enter
        button.setOnAction(e -> {
           //打开信息对话框,打个招呼
           Alert alert = new Alert(AlertType.INFORMATION, "Hello World!?");
           alert.showAndWait();
        });

        // 主窗口中显示的场景的根
        StackPane root = new StackPane();

        // 将按钮添加为根的子代
        root.getChildren().add(button);

        // 创建一个指定根和大小的场景
        Scene scene = new Scene(root, 500, 300);

        // 将场景添加到舞台
        primaryStage.setScene(scene);

        // 使舞台可见
        primaryStage.show();
    }

    public static void main(String[] args) {
        // 启动HelloWorld应用程序。

        // 由于此方法是HelloWorld类的成员,因此第一个
        // 不需要参数
        Application.launch(HelloWorld.class, args);
    }

}

该Application班是每一个JavaFX应用程序的入口点。只能Application启动一个,并且可以使用

Application.launch(HelloWorld.class, args);

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

以下内容对于此处的程序员很重要:

  1. 首先launch创建Application该类的新实例(HelloWorld在这种情况下)。Application因此,该类需要一个无参数的构造函数。

  2. init()在Application创建的实例上调用。在这种情况下,from的默认实现Application不执行任何操作。

  3. start为Appication实例调用,然后将主Stage窗口(=窗口)传递给该方法。在JavaFX Application线程(平台线程)上自动调用此方法。

  4. 该应用程序将运行,直到平台确定是该关闭为止。在这种情况下,当最后一个窗口关闭时,将完成此操作。

  5. 该stop方法在Application实例上调用。在这种情况下,from的实现Application不执行任何操作。在JavaFX Application线程(平台线程)上自动调用此方法。

在该start方法中,构建了场景图。在这种情况下,它包含2 Nodes:AButton和a StackPane。

该Button表示在用户界面中按钮和StackPane是用于一个容器Button,它确定它的位置。

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