为什么start()已经存在时,JavaFX Application中使用的main方法

Jee*_*tal 7 java

JavaFX应用程序的起点是start方法.但是在示例JavaFX应用程序中,还包括一个主要方法.在这种特殊情况下main方法的用途是什么?为什么需要将start()定义为JavaFX的起点.难道我们不能简单地使用main方法来定义像Swings这样的起点吗?

一个示例HelloWorld应用程序:

public class HelloWorld extends Application {

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

        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 static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

Suv*_*yil 12

来自Oracle Docs,

当使用JavaFX Packager工具创建应用程序的JAR文件时,JavaFX应用程序不需要main()方法,该工具将JavaFX Launcher嵌入JAR文件中.但是, 包含 main()方法非常有用,因此您可以运行在没有JavaFX Launcher的情况下创建的JAR文件,例如在使用未完全集成JavaFX工具的IDE时.此外,嵌入JavaFX代码的Swing应用程序需要main()方法.