JavaFX 第一个JavaFX应用程序
在这里,我们正在创建一个简单的 JavaFX 应用程序,该应用程序通过单击上显示的按钮在控制台上打印hello world。
第 1 步:继承javafx.application.Application并覆盖start()
正如我们之前研究过的,start()方法是构建 JavaFX 应用程序的起点,因此我们需要首先覆盖javafx.application.Application类的start 方法。类javafx.stage.Stage 的对象被传递给start()方法,因此导入这个类并将其对象传递给 start 方法。需要导入JavaFX.application.Application以覆盖 start 方法。
代码将如下所示。
package com.yiidian;
import javafx.application.Application;
import javafx.stage.Stage;
/**
* 一点教程网: http://www.yiidian.com
*/
public class Hello_World extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
第 2 步:创建一个按钮
可以通过实例化 javafx.scene.control.Button 类来创建按钮。为此,我们必须将此类导入到我们的代码中。在 Button 类构造函数中传递按钮标签文本。
代码将如下所示。
package com.yiidian;
import javafx.application.Application;
import javafx.scene.control.Button;
import javafx.stage.Stage;
/**
* 一点教程网: http://www.yiidian.com
*/
public class Hello_World extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Button btn1 = new Button("Say, Hello World");
}
}
第 3 步:创建布局并向其添加按钮
JavaFX 提供了布局的数量。我们需要实现其中之一才能正确地可视化小部件。它存在于场景图的顶层,可以看作是一个根节点。所有其他节点(按钮、文本等)都需要添加到此布局中。
在这个应用程序中,我们实现了StackPane布局。可以通过实例化 javafx.scene.layout.StackPane 类来实现。
代码现在将如下所示。
package com.yiidian;
import javafx.application.Application;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
* 一点教程网: http://www.yiidian.com
*/
public class Hello_World extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Button btn1 = new Button("Say, Hello World");
StackPane root=new StackPane();
root.getChildren().add(btn1);
}
}
第 4 步:创建Scene场景
需要将布局添加到Scene场景中。场景仍处于应用程序结构层次结构中的较高级别。它可以通过实例化javafx.scene.Scene类来创建。我们需要将布局对象传递给场景类构造函数。我们的应用程序代码现在如下所示。
package com.yiidian;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
* 一点教程网: http://www.yiidian.com
*/
public class Hello_World extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Button btn1 = new Button("Say, Hello World");
StackPane root=new StackPane();
root.getChildren().add(btn1);
Scene scene=new Scene(root);
}
}
我们还可以在 Scene 类构造函数中传递场景所需舞台的宽度和高度。
第 5 步:准备Stage
javafx.stage.Stage类提供了一些重要的方法,需要调用这些方法来为Stage设置一些属性。我们可以设置Stage的标题。我们还需要调用 show() 方法,否则将不会显示Stage。让我们看一下描述如何为应用程序准备阶段的代码。
package com.yiidian;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
* 一点教程网: http://www.yiidian.com
*/
public class Hello_World extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Button btn1 = new Button("Say, Hello World");
StackPane root=new StackPane();
root.getChildren().add(btn1);
Scene scene=new Scene(root);
primaryStage.setScene(scene);
primaryStage.setTitle("第一个JavaFX程序");
primaryStage.show();
}
}
第 6 步:为按钮创建一个事件
当我们的应用程序为按钮上的事件打印 hello world 时。我们需要为按钮创建一个事件。为此,在按钮上调用setOnAction()并定义一个匿名类 Event Handler 作为该方法的参数。
在这个匿名类中,定义一个方法 handle(),它包含如何处理事件的代码。在我们的例子中,它在控制台上打印 hello world。
package com.yiidian;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
* 一点教程网: http://www.yiidian.com
*/
public class Hello_World extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Button btn1 = new Button("Say, Hello World");
btn1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
System.out.println("hello world");
}
});
StackPane root=new StackPane();
root.getChildren().add(btn1);
Scene scene=new Scene(root);
primaryStage.setScene(scene);
primaryStage.setTitle("第一个JavaFX程序");
primaryStage.show();
}
}
第七步:创建main方法
到目前为止,我们已经配置了开发一个基本的 JavaFX 应用程序所需的所有必要的东西,但这个应用程序仍然不完整。我们还没有创建 main 方法。因此,最后,我们需要创建一个 main 方法,我们将在其中启动应用程序,即调用 launch() 方法并将命令行参数 (args) 传递给它。代码现在将如下所示。
package com.yiidian;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
* 一点教程网: http://www.yiidian.com
*/
public class Hello_World extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Button btn1 = new Button("Say, Hello World");
btn1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
System.out.println("hello world");
}
});
StackPane root=new StackPane();
root.getChildren().add(btn1);
Scene scene=new Scene(root);
primaryStage.setScene(scene);
primaryStage.setTitle("第一个JavaFX程序");
primaryStage.show();
}
public static void main (String[] args)
{
launch(args);
}
}
应用程序将在屏幕上产生以下输出。
热门文章
优秀文章