在本教程中,我将向您展示如何创建您的第一个 JavaFX 应用程序。因此,本教程既可以向您介绍核心 JavaFX 概念,也可以为您提供一些 JavaFX 代码,您可以将其用作您自己的实验的模板。

JavaFX 应用程序类

JavaFX 应用程序需要一个主启动类。该类必须扩展 javafx.application.Application自 Java 8 以来 Java 中的标准类。
这是一个示例子类Application:

  1. import javafx.application.Application;
  2. public class MyFxApp extends Application {
  3. }

实现 start()

JavaFXApplication类的所有子类都必须实现该类的抽象start() 方法Application(或者是其Application自身的抽象子类)。
该start() 方法在 JavaFX 应用程序启动时被调用。这是上面的示例,但已start()实现方法:

  1. import javafx.application.Application;
  2. import javafx.stage.Stage;
  3. public class MyFxApp extends Application {
  4. @Override
  5. public void start(Stage primaryStage) throws Exception {
  6. primaryStage.setTitle("My First JavaFX App");
  7. primaryStage.show();
  8. }
  9. }

该start()方法采用类型的单个参数Stage。该阶段是显示 JavaFX 应用程序的所有可视部分的地方。该Stage对象由 JavaFX 运行时为您创建。
上面的例子在舞台对象上设置了一个标题,然后调用show()它。这将使 JavaFX 应用程序在窗口中可见,并且窗口顶部栏中的标题可见。
如果您不调用show()舞台对象,则什么都看不到。没有打开任何窗口。如果您的 JavaFX 应用程序在启动时不可见,请检查您是否记得 Stage show()从内部调用该方法start()。

添加一个 main() 方法

您实际上可以在没有main()方法的情况下启动 JavaFX 应用程序。但是,如果您想将命令行参数传递给应用程序,您需要添加一个main()方法。一般来说,我更喜欢添加一个main()方法,因为它可以更明确地说明哪些代码启动了应用程序。
这是上面main()添加了一个方法的示例:

  1. import javafx.application.Application;
  2. import javafx.stage.Stage;
  3. public class MyFxApp extends Application {
  4. @Override
  5. public void start(Stage primaryStage) throws Exception {
  6. primaryStage.setTitle("My First JavaFX App");
  7. primaryStage.show();
  8. }
  9. public static void main(String[] args) {
  10. Application.launch(args);
  11. }
  12. }

如您所见,该方法使用命令行参数main()调用静态方法。launch()该launch()方法是位于Application 类中的静态方法。此方法启动 JavaFX 运行时和您的 JavaFX 应用程序。
该launch()方法将检测从哪个类调用它,因此您不必明确告诉它要启动哪个类。
这就是创建 JavaFX 应用程序所需的全部内容。这很简单,不是吗?现在您已经准备好开始使用 JavaFX 了!
这是运行上述 JavaFX 应用程序后打开的窗口的屏幕截图:

第一个 JavaFX 应用程序 - 图1

添加场景

前面的 JavaFX 示例仅打开一个窗口,但在此窗口内不显示任何内容。要在 JavaFX 应用程序窗口中显示某些内容,您必须Scene向Stage对象添加一个。这是在start()方法内部完成的。
要在 JavaFX 应用程序中显示的所有组件都必须位于场景中。“舞台”和“场景”的名称灵感来自剧院。一个舞台可以展示多个场景,就像在戏剧中一样。类似地,计算机游戏可以有菜单场景、游戏场景、游戏结束场景、高分场景等。
这是一个如何将Scene对象添加到的示例Stage以及一个简单的 Label:

  1. import javafx.application.Application;
  2. import javafx.scene.Scene;
  3. import javafx.scene.control.Label;
  4. import javafx.stage.Stage;
  5. public class MyFxApp extends Application {
  6. @Override
  7. public void start(Stage primaryStage) throws Exception {
  8. primaryStage.setTitle("My First JavaFX App");
  9. Label label = new Label("Hello World, JavaFX !");
  10. Scene scene = new Scene(label, 400, 200);
  11. primaryStage.setScene(scene);
  12. primaryStage.show();
  13. }
  14. public static void main(String[] args) {
  15. Application.launch(args);
  16. }
  17. }

此示例中添加了三行。首先Label创建一个对象。然后Scene 创建一个对象,传递Labelas 参数以及表示场景宽度和高度的两个参数。
构造函数的第一个参数是_场景图_Scene的根元素。场景图是一个类似于对象结构的图形,包含要在 JavaFX 应用程序中显示的所有可视组件 - 例如 GUI 组件。
width 和 height 参数设置 JavaFX 窗口打开时的宽度和高度,但用户可以调整窗口大小。
以下是打开的窗口在添加Scene和Label添加后的外观:
第一个 JavaFX 应用程序 - 图2