第一个JavaFX应用程序
在本教程中,我将向我们展示如何创建第一个JavaFX应用程序。因此,本教程既可以向我们介绍JavaFX的核心概念,也可以为我们提供一些JavaFX代码,我们可以将它们用作自己的实验的模板。
JavaFX应用程序类
JavaFX应用程序需要主要的启动类。此类必须扩展javafx.application.Application
类,该类是Java自Java 8起的标准类。
这是Application
的示例子类:
package com.Hyman.javafx.helloworld; import javafx.application.Application; public class MyFxApp extends Application { }
实现start()
JavaFXApplication类的所有子类都必须实现Application类的抽象start()方法(或者是Application本身的抽象子类)。
启动JavaFX应用程序时,将调用start()
方法。这是上面的例子,但是实现了start()
方法:
package com.Hyman.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("My First JavaFX App"); primaryStage.show(); } }
start()
方法采用Stage
类型的单个参数。在此阶段,将显示JavaFX应用程序的所有可视部分。 JavaFX运行时会为我们创建Stage
对象。
上面的示例在舞台对象上设置标题,然后在其上调用show()
。这将使JavaFX应用程序在窗口中可见,标题在窗口的顶部栏中可见。
如果我们不对舞台对象调用show()
,则看不到任何内容。没有打开任何窗口。如果JavaFX应用程序在启动时不可见,请检查我们是否记得从start()
内部调用Stage``show()
方法。
添加main()方法
实际上,我们可以在没有main()
方法的情况下启动JavaFX应用程序。但是,如果要将命令行参数传递给应用程序,则需要添加一个" main()"方法。通常,我更喜欢添加一个" main()"方法,因为它使启动应用程序的代码更加明确。
这是上面添加了main()
方法的示例:
package com.Hyman.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("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应用程序窗口中显示内容,必须在Stage
对象中添加Scene
。这是在start()
方法内部完成的。
JavaFX应用程序内要显示的所有组件都必须位于场景内。 "舞台"和"场景"的名称是受剧院启发的。一个舞台可以显示多个场景,就像在戏剧中一样。类似地,计算机游戏可以具有菜单场景,游戏场景,游戏场景,高分场景等。
这是一个如何将"场景"对象与一个简单的"标签"一起添加到"舞台"的示例:
package com.Hyman.javafx.helloworld; 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); } }
此示例已添加三行。首先创建一个"标签"对象。然后创建一个"场景"对象,将"标签"作为参数以及代表场景宽度和高度的两个参数传递。
场景构造器的第一个参数是场景图的根元素。场景图是一个类似于对象结构的图,其中包含要在JavaFX应用程序中显示的所有可视组件(例如GUI组件)。
width和height参数设置JavaFX窗口打开时的宽度和高度,但是用户可以调整窗口的大小。