Hello World 计划
以下代码创建一个简单的用户界面,其中包含单个 Button
,可在单击时将 String
打印到控制台。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
// create a button with specified text
Button button = new Button("Say 'Hello World'");
// set a handler that is executed when the user activates the button
// e.g. by clicking it or pressing enter while it's focused
button.setOnAction(e -> {
//Open information dialog that says hello
Alert alert = new Alert(AlertType.INFORMATION, "Hello World!?");
alert.showAndWait();
});
// the root of the scene shown in the main window
StackPane root = new StackPane();
// add button as child of the root
root.getChildren().add(button);
// create a scene specifying the root and the size
Scene scene = new Scene(root, 500, 300);
// add scene to the stage
primaryStage.setScene(scene);
// make the stage visible
primaryStage.show();
}
public static void main(String[] args) {
// launch the HelloWorld application.
// Since this method is a member of the HelloWorld class the first
// parameter is not required
Application.launch(HelloWorld.class, args);
}
}
Application
类是每个 JavaFX 应用程序的入口点。只有一个 Application
可以启动,这是使用
Application.launch(HelloWorld.class, args);
这将创建作为参数传递的 Application
类的实例,并启动 JavaFX 平台。
以下对程序员来说非常重要:
- 首先,
launch
创建了Application
类的新实例(在本例中为HelloWorld
)。因此Application
类需要一个无参数构造函数。 - 在创建的
Application
实例上调用init()
。在这种情况下,Application
的默认实现不执行任何操作。 start
用于Appication
实例,主要Stage
(= window)被传递给方法。在 JavaFX Application 线程(Platform 线程)上自动调用此方法。- 应用程序一直运行,直到平台确定关闭时间。在这种情况下,当最后一个窗口关闭时,这样做。
- 在
Application
实例上调用stop
方法。在这种情况下,Application
的实现什么都不做。在 JavaFX Application 线程(Platform 线程)上自动调用此方法。
在 start
方法中构建场景图。在这种情况下它包含 2 个 Node
s:一个 Button
和一个 StackPane
。
Button
表示 UI 中的按钮,StackPane
是 Button
的容器,用于确定它的位置。
创建了 Scene
来显示这些 Node
s。最后将 Scene
添加到 Stage
,这是显示整个 UI 的窗口。