在这里, 我们正在创建一个简单的JavaFX应用程序, 通过单击舞台上显示的按钮在控制台上打印问候世界。
步骤1:扩展javafx.application.Application并覆盖start()
正如我们之前研究的那样, start()方法是构造JavaFX应用程序的起点, 因此, 我们需要首先重写javafx.application.Application类的start方法。类javafx.stage.Stage的对象传递到start()方法中, 因此导入该类并将其对象传递到start方法中。需要导入JavaFX.application.Application才能覆盖启动方法。
该代码将如下所示。
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 stub
Buttonbtn1=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 stub
Button 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 stub
Button 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 stub
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("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 stub
Button btn1=new Button("Say, Hello World");
btn1.setOnAction(new EventHandler<ActionEvent>() {
@Override
publicvoid handle(ActionEvent arg0) {
// TODO Auto-generated method stub
System.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 stub
Button btn1=new Button("Say, Hello World");
btn1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
// TODO Auto-generated method stub
System.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);
}
}
该应用程序将在屏幕上产生以下输出。
评论前必须登录!
注册