在本教程中,我将向您展示如何创建您的第一个 JavaFX 应用程序。因此,本教程既可以让您了解核心 JavaFX 概念,也可以为您提供一些可以用作自己实验模板的 JavaFX 代码。
JavaFX 应用程序类
一个 JavaFX 应用程序需要一个主要的启动类。这个类必须扩展 javafx.application.Application
类,这是自 Java 8 起在 Java 中的标准类。
这里是 Application
的一个示例子类:
package com.jenkov.javafx.helloworld;
导入 javafx.application.Application;
public class MyFxApp extends Application {
}
实现 start()
所有JavaFX Application
类的子类必须实现Application
类的抽象start()
方法(或者是Application
本身的抽象子类)。
start()
方法在 JavaFX 应用程序启动时被调用。这里是上面的例子,但实现了 start()
方法:
package com.jenkov.javafx.helloworld; import javafx.application.Application; import javafx.stage.Stage; public class MyFxApp extends Application { @Override public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("我的第一个JavaFX应用"); primaryStage.show(); }
}
start()
方法接受一个类型为 Stage
的单一参数。舞台是所有 JavaFX 应用程序的视觉部分显示的地方。Stage
对象由 JavaFX 运行时为您创建。
上面的示例在舞台对象上设置了一个标题,然后调用 show()
。这将使 JavaFX 应用程序在一个窗口中可见,窗口顶部的标题将可见。
如果您没有在舞台对象上调用 show()
,则没有任何内容可见。没有窗口被打开。如果您的 JavaFX 应用程序在启动时没有变得可见,请检查您是否记得在 start()
内部调用 Stage
的 show()
方法。
添加一个 main() 方法
实际上,您可以在没有 main()
方法的情况下启动 JavaFX 应用程序。但是,如果您想将命令行参数传递给应用程序,则需要添加 main()
方法。一般来说,我更喜欢添加 main()
方法,因为这使得启动应用程序的代码更加明确。
这里是上面的例子,添加了一个 main()
方法:
package com.jenkov.javafx.helloworld; import javafx.application.Application; import javafx.stage.Stage; public class MyFxApp extends Application { @Override public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("我的第一个JavaFX应用"); primaryStage.show(); } public static void main(String[] args) { Application.launch(args); }
}
正如你所看到的,main()
方法使用命令行参数调用静态的 launch()
方法。launch()
方法是位于 Application
类中的静态方法。此方法启动 JavaFX 运行时和你的 JavaFX 应用程序。
launch()
方法将检测它是从哪个类调用的,因此您不必明确告诉它要启动哪个类。