Stage(舞台),它代表了一个顶级窗口,是JavaFX应用程序的主要容器。Stage可以包含多个场景(Scene),每个场景可以包含各种用户界面元素(如按钮、文本框等)。Stage提供了许多方法和属性,用于设置窗口的外观、行为和交互。
举例:
package com.example.demo1;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import java.util.Optional;
public class HelloApplication extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// 创建按钮
Button button = new Button("Hello World");
button.setLayoutX(200);
button.setLayoutY(200);
// 创建布局
AnchorPane pane = new AnchorPane();
pane.getChildren().add(button);
// 创建场景
Scene scene = new Scene(pane, 500, 500);
// 设置场景到舞台
primaryStage.setScene(scene);
primaryStage.setTitle("Hello"); // 设置舞台标题
primaryStage.getIcons().add(new Image("F:\\myCode\\java\\javaFX\\0910\\demo1\\src\\main\\resources\\image\\logo.png")); // 设置舞台图标,图标文件位于 "image/logo.png"
primaryStage.setResizable(false); // 设置舞台不可调整大小
// 防止隐式退出
Platform.setImplicitExit(false);
// 处理窗口关闭事件
primaryStage.setOnCloseRequest(event -> {
event.consume(); // 阻止默认的窗口关闭操作
// 创建一个确认对话框
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("退出程序");
alert.setHeaderText(null);
alert.setContentText("您是否需要退出程序");
// 显示对话框,并等待用户响应
Optional<ButtonType> result = alert.showAndWait();
// 如果用户点击了确认按钮,则退出程序
if (result.get() == ButtonType.OK) {
Platform.exit(); // 退出 JavaFX 应用程序
}
});
// 显示舞台
primaryStage.show();
}
}
以下是代码的主要功能和作用:
-
HelloApplication
类继承了Application
类,并重写了start()
方法,该方法是 JavaFX 应用程序的入口点。 -
main()
方法是应用程序的启动点,它调用launch()
方法来启动 JavaFX 应用程序。 -
在
start()
方法中:- 创建一个按钮,并设置按钮的文本和位置。
- 创建一个
AnchorPane
布局,并将按钮添加到布局中。 - 创建一个场景,将布局作为场景的根节点,并指定场景的大小为 500x500 像素。
- 将场景设置到舞台(主窗口)中。
- 设置舞台的标题为 "Hello"。
- 添加一个图标到舞台,图标文件的路径是 "F:\myCode\java\javaFX\0910\demo1\src\main\resources\image\logo.png"。
- 设置舞台不可调整大小。
- 调用
Platform.setImplicitExit(false)
来防止隐式退出,即当所有窗口关闭时,JavaFX 应用程序不会自动退出。
-
primaryStage.setOnCloseRequest()
方法设置了窗口关闭事件的处理逻辑。当用户尝试关闭窗口时,会触发这个事件。在事件处理程序中:- 调用
event.consume()
阻止默认的窗口关闭操作。 - 创建一个确认对话框(
Alert
),标题为 "退出程序",内容为 "您是否需要退出程序"。 - 显示对话框,并等待用户响应。
- 如果用户点击了确认按钮(ButtonType.OK),则调用
Platform.exit()
退出 JavaFX 应用程序。
- 调用
-
最后,调用
primaryStage.show()
方法显示舞台(窗口)。