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 应用程序不会自动退出。
4.primaryStage.setOnCloseRequest()
方法设置了窗口关闭事件的处理逻辑。当用户尝试关闭窗口时,会触发这个事件。在事件处理程序中:
- 调用
event.consume()
阻止默认的窗口关闭操作。 - 创建一个确认对话框(
Alert
),标题为 "退出程序",内容为 "您是否需要退出程序"。 - 显示对话框,并等待用户响应。
- 如果用户点击了确认按钮(ButtonType.OK),则调用
Platform.exit()
退出 JavaFX 应用程序。
5.最后,调用 primaryStage.show()
方法显示舞台(窗口)。