JavaFX之Stage

简介: JavaFX之Stage

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();
    }
}

以下是代码的主要功能和作用:

  1. HelloApplication 类继承了 Application 类,并重写了 start() 方法,该方法是 JavaFX 应用程序的入口点。
  2. main() 方法是应用程序的启动点,它调用 launch() 方法来启动 JavaFX 应用程序。
  3. 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() 方法显示舞台(窗口)。


相关文章
|
10月前
|
机器学习/深度学习 存储 人工智能
MNN:阿里开源的轻量级深度学习推理框架,支持在移动端等多种终端上运行,兼容主流的模型格式
MNN 是阿里巴巴开源的轻量级深度学习推理框架,支持多种设备和主流模型格式,具备高性能和易用性,适用于移动端、服务器和嵌入式设备。
2370 18
MNN:阿里开源的轻量级深度学习推理框架,支持在移动端等多种终端上运行,兼容主流的模型格式
|
机器学习/深度学习 传感器 人工智能
深度学习之自主学习和任务规划
基于深度学习的自主学习和任务规划,是指通过深度学习算法使人工智能(AI)系统能够自主地从环境中学习,并根据特定的目标和任务,规划出有效的解决方案。
531 3
|
11月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
10432 5
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
存储 算法 Java
深入理解Java内存管理
本文将通过通俗易懂的语言,详细解析Java的内存管理机制。从JVM的内存结构入手,探讨堆、栈、方法区等区域的具体作用和原理。进一步分析垃圾回收机制及其调优方法,最后讨论内存泄漏的常见场景及防范措施。希望通过这篇文章,帮助读者更好地理解和优化Java应用的内存使用。
|
JSON Kubernetes API
在K8S中,什么是静态Pod?
在K8S中,什么是静态Pod?
|
存储 Java
JavaFX【TableView使用详解】
JavaFX【TableView使用详解】
|
数据采集 存储 监控
如何使用 Python 爬取京东商品数据
如何使用 Python 爬取京东商品数据
1954 0
|
小程序 数据库
【微信小程序7】云开发中实时聊天系统的实现方法
【微信小程序7】云开发中实时聊天系统的实现方法
548 0
|
IDE Java 开发工具
QGS
记javafx+MyBatis小应用测试
javafx+MyBatis 环境:JDK1.8+IDEA
QGS
666 0
记javafx+MyBatis小应用测试