在本教程中,我将向您展示如何创建您的第一个 JavaFX 应用程序。因此,本教程既可以向您介绍核心 JavaFX 概念,也可以为您提供一些 JavaFX 代码,您可以将其用作您自己的实验的模板。
JavaFX 应用程序类
JavaFX 应用程序需要一个主启动类。该类必须扩展 javafx.application.Application自 Java 8 以来 Java 中的标准类。
这是一个示例子类Application:
import javafx.application.Application;
public class MyFxApp extends Application {
}
实现 start()
JavaFXApplication类的所有子类都必须实现该类的抽象start() 方法Application(或者是其Application自身的抽象子类)。
该start() 方法在 JavaFX 应用程序启动时被调用。这是上面的示例,但已start()实现方法:
import javafx.application.Application;
import javafx.stage.Stage;
public class MyFxApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("My First JavaFX App");
primaryStage.show();
}
}
该start()方法采用类型的单个参数Stage。该阶段是显示 JavaFX 应用程序的所有可视部分的地方。该Stage对象由 JavaFX 运行时为您创建。
上面的例子在舞台对象上设置了一个标题,然后调用show()它。这将使 JavaFX 应用程序在窗口中可见,并且窗口顶部栏中的标题可见。
如果您不调用show()舞台对象,则什么都看不到。没有打开任何窗口。如果您的 JavaFX 应用程序在启动时不可见,请检查您是否记得 Stage show()从内部调用该方法start()。
添加一个 main() 方法
您实际上可以在没有main()方法的情况下启动 JavaFX 应用程序。但是,如果您想将命令行参数传递给应用程序,您需要添加一个main()方法。一般来说,我更喜欢添加一个main()方法,因为它可以更明确地说明哪些代码启动了应用程序。
这是上面main()添加了一个方法的示例:
import javafx.application.Application;
import javafx.stage.Stage;
public class MyFxApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("My First JavaFX App");
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
如您所见,该方法使用命令行参数main()调用静态方法。launch()该launch()方法是位于Application 类中的静态方法。此方法启动 JavaFX 运行时和您的 JavaFX 应用程序。
该launch()方法将检测从哪个类调用它,因此您不必明确告诉它要启动哪个类。
这就是创建 JavaFX 应用程序所需的全部内容。这很简单,不是吗?现在您已经准备好开始使用 JavaFX 了!
这是运行上述 JavaFX 应用程序后打开的窗口的屏幕截图:
添加场景
前面的 JavaFX 示例仅打开一个窗口,但在此窗口内不显示任何内容。要在 JavaFX 应用程序窗口中显示某些内容,您必须Scene向Stage对象添加一个。这是在start()方法内部完成的。
要在 JavaFX 应用程序中显示的所有组件都必须位于场景中。“舞台”和“场景”的名称灵感来自剧院。一个舞台可以展示多个场景,就像在戏剧中一样。类似地,计算机游戏可以有菜单场景、游戏场景、游戏结束场景、高分场景等。
这是一个如何将Scene对象添加到的示例Stage以及一个简单的 Label:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;
public class MyFxApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("My First JavaFX App");
Label label = new Label("Hello World, JavaFX !");
Scene scene = new Scene(label, 400, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
此示例中添加了三行。首先Label创建一个对象。然后Scene 创建一个对象,传递Labelas 参数以及表示场景宽度和高度的两个参数。
构造函数的第一个参数是_场景图_Scene的根元素。场景图是一个类似于对象结构的图形,包含要在 JavaFX 应用程序中显示的所有可视组件 - 例如 GUI 组件。
width 和 height 参数设置 JavaFX 窗口打开时的宽度和高度,但用户可以调整窗口大小。
以下是打开的窗口在添加Scene和Label添加后的外观: