创建第一个JavaFX应用程序

在这里, 我们正在创建一个简单的JavaFX应用程序, 通过单击舞台上显示的按钮在控制台上打印问候世界。
步骤1:扩展javafx.application.Application并覆盖start()
正如我们之前研究的那样, start()方法是构造JavaFX应用程序的起点, 因此, 我们需要首先重写javafx.application.Application类的start方法。类javafx.stage.Stage的对象传递到start()方法中, 因此导入该类并将其对象传递到start方法中。需要导入JavaFX.application.Application才能覆盖启动方法。
【创建第一个JavaFX应用程序】该代码将如下所示。

package application; import javafx.application.Application; import javafx.stage.Stage; public class Hello_World extends Application{ @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stub }}

步骤2:建立按钮
可以通过实例化javafx.scene.control.Button类来创建按钮。为此, 我们必须将此类导入到我们的代码中。在Button类构造函数中传递按钮标签文本。该代码将如下所示。
package application; import javafx.application.Application; importjavafx.scene.control.Button; import javafx.stage.Stage; public class Hello_World extends Application{ @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stubButtonbtn1=newButton("Say, Hello World"); }}

第3步:创建布局并向其中添加按钮
JavaFX提供了许多布局。我们需要实现其中之一以便正确可视化小部件。它存在于场景图的顶层, 可以看作是根节点。所有其他节点(按钮, 文本等)都需要添加到此布局中。
在此应用程序中, 我们实现了StackPane布局。可以通过实例化javafx.scene.layout.StackPane类来实现。现在, 代码如下所示。
package application; import javafx.application.Application; import javafx.scene.control.Button; import javafx.stage.Stage; import javafx.scene.layout.StackPane; public class Hello_World extends Application{ @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stubButton btn1=new Button("Say, Hello World"); StackPane root=new StackPane(); root.getChildren().add(btn1); }}

步骤4:创建场景
需要将布局添加到场景。场景保持在应用程序结构层次结构中的较高级别。可以通过实例化javafx.scene.Scene类来创建它。我们需要将布局对象传递给场景类构造函数。现在, 我们的应用程序代码如下所示。
package application; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; import javafx.scene.layout.StackPane; public class Hello_World extends Application{ @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stubButton btn1=new Button("Say, Hello World"); StackPane root=new StackPane(); root.getChildren().add(btn1); Scene scene=new Scene(root); }}

我们还可以在Scene类构造函数中传递场景所需舞台的宽度和高度。
步骤5:准备阶段
javafx.stage.Stage类提供了一些重要的方法, 需要调用这些方法才能设置舞台的某些属性。我们可以设置舞台的标题。我们还需要调用show()方法, 否则将不会显示该阶段。让我们看一下描述如何准备应用程序阶段的代码。
package application; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; import javafx.scene.layout.StackPane; public class Hello_World extends Application{ @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stubButton btn1=new Button("Say, Hello World"); StackPane root=new StackPane(); root.getChildren().add(btn1); Scene scene=new Scene(root); primaryStage.setScene(scene); primaryStage.setTitle("First JavaFX Application"); primaryStage.show(); }}

步骤6:为按钮创建一个事件
当我们的应用程序在按钮上打印事件的问候世界时。我们需要为按钮创建一个事件。为此, 请在按钮上调用setOnAction()并将一个匿名类Event Handler定义为该方法的参数。
在这个匿名类中, 定义一个方法handle(), 其中包含有关事件处理方式的代码。在我们的例子中, 它正在控制台上打印hello world。
package application; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; import javafx.scene.layout.StackPane; public class Hello_World extends Application{ @Override publicvoid start(Stage primaryStage) throws Exception {// TODO Auto-generated method stubButton btn1=new Button("Say, Hello World"); btn1.setOnAction(new EventHandler< ActionEvent> () {@Overridepublicvoid handle(ActionEvent arg0) {// TODO Auto-generated method stubSystem.out.println("hello world"); }}); StackPane root=new StackPane(); root.getChildren().add(btn1); Scene scene=new Scene(root, 600, 400); primaryStage.setScene(scene); primaryStage.setTitle("First JavaFX Application"); primaryStage.show(); }}

步骤7:建立主要方法
到目前为止, 我们已经配置了开发基本JavaFX应用程序所需的所有必要内容, 但是该应用程序仍不完整。我们尚未创建主要方法。因此, 最后, 我们需要创建一个main方法, 在其中我们将启动应用程序, 即, 将调用launch()方法并将命令行参数(args)传递给该方法。现在, 代码如下所示。
package application; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; import javafx.scene.layout.StackPane; public class Hello_World extends Application{ @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stubButton btn1=new Button("Say, Hello World"); btn1.setOnAction(new EventHandler< ActionEvent> () {@Overridepublic void handle(ActionEvent arg0) {// TODO Auto-generated method stubSystem.out.println("hello world"); }}); StackPane root=new StackPane(); root.getChildren().add(btn1); Scene scene=new Scene(root, 600, 400); primaryStage.setTitle("First JavaFX Application"); primaryStage.setScene(scene); primaryStage.show(); } publicstaticvoid main (String[] args) {launch(args); }}

该应用程序将在屏幕上产生以下输出。
创建第一个JavaFX应用程序

文章图片

    推荐阅读