JavaFX对话框控件-Dialog

news2024/11/10 21:27:48

JavaFX对话框控件-Dialog

  • 常用属性
    • title
    • initOwner
    • dialogPane
    • resultConverter
  • 实现方式

  • 与Alert大部分功能类似
  • 可以自定义弹出框内容,比较灵活
  • DialogPane布局配合使用,自定义具体内容

参考DialogPane
在这里插入图片描述

常用属性

title

弹出框标题,标题太长会把超长部分截取,后面加上……

dialog.setTitle("标题");

initOwner

设置弹框的所有者,用于确定对话框的位置和模式

dialog.initOwner(stage);

dialogPane

获取 Alert 的内部 DialogPane,允许进一步定制对话框的布局和内容,其中最重要的是expandableContent

dialog.setDialogPane(dialogPane);

resultConverter

点击按钮返回结果组装

 dialog.setResultConverter(btnType -> {
     if (ButtonType.OK.equals(btnType)) {
            return null;
     }
     return null;
 });

实现方式

public static Parent demo1(Window owner) {
        FlowPane flowPane = new FlowPane();
        flowPane.setHgap(10);
        flowPane.setVgap(10);
        flowPane.setOrientation(Orientation.VERTICAL);
        Button button1 = new Button("demo1");
        button1.setOnMouseClicked((event) -> {
            if (MouseButton.PRIMARY.equals(event.getButton())) {
                createDialog(owner);
            }
        });
        flowPane.getChildren().add(button1);
        return flowPane;
    }

    public static void createDialog(Window owner) {
        DialogPane dialogPane = new DialogPane();
        dialogPane.setHeaderText("请输入用户密码:");
        dialogPane.setGraphic(new ImageView("icon.png"));

        GridPane grid = new GridPane();
        grid.setHgap(10);
        grid.setVgap(10);

        Label labelUname = new Label("用户名:");
        grid.add(labelUname, 0, 0);
        TextField txtUname = new TextField();
        txtUname.setPromptText("请输入用户名");
        grid.add(txtUname, 1, 0);

        Label labelPwd = new Label("密 码:");
        grid.add(labelPwd, 0, 1);
        PasswordField txtPwd = new PasswordField();
        txtPwd.setPromptText("请输入密码");
        grid.add(txtPwd, 1, 1);
        dialogPane.setContent(grid);

        // 设置按钮
        dialogPane.getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL);

        TextArea textArea = new TextArea("展开显示详细内容");
        textArea.setEditable(true);
        textArea.setWrapText(true);
        textArea.setMaxWidth(Double.MAX_VALUE);
        textArea.setMaxHeight(Double.MAX_VALUE);
        dialogPane.setExpandableContent(textArea);
        dialogPane.setExpanded(false);

        Dialog<UserLoginDTO> dialog = new Dialog<UserLoginDTO>();
        dialog.setTitle("标题信息");
        dialog.setWidth(400);
        dialog.setHeight(300);
        dialog.initOwner(owner);
        dialog.setDialogPane(dialogPane);
        dialog.setResultConverter(btnType -> {
            if (ButtonType.OK.equals(btnType)) {
                String username = txtUname.getText();
                String password = txtPwd.getText();
                if (username.isEmpty() || password.isEmpty()) {
                    return null;
                } else {
                    UserLoginDTO userLoginDTO = new UserLoginDTO();
                    userLoginDTO.setUserName(username);
                    userLoginDTO.setPassword(password);
                    return userLoginDTO;
                }
            }
            return null;
        });
        Optional<UserLoginDTO> optional = dialog.showAndWait();
        optional.ifPresent((val) -> {
            System.out.println("uname->" + val.getUserName());
            System.out.println("pwd->" + val.getPassword());
        });
    }

    public static class UserLoginDTO {
        private String userName;
        private String password;

        public String getUserName() {
            return userName;
        }

        public void setUserName(String userName) {
            this.userName = userName;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2049032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024 年了,IT 运维监控系统都有哪些推荐?

大浪淘沙&#xff0c;2024 年的今天&#xff0c;市面上很多监控系统慢慢淡出了大家的视野&#xff0c;而一些新的监控系统也逐渐崭露头角。今天我们就来看看 2024 年的当下&#xff0c;哪些 IT 运维监控系统最值得关注。 Prometheus 毫无疑问&#xff0c;Prometheus 是最值得关…

MySQL InnoDB supremum pseudo-record范围说明

引言 在 MySQL InnoDB 存储引擎中&#xff0c;锁机制是保证数据一致性和事务隔离的重要手段之一。InnoDB 引入了多种锁机制&#xff0c;其中 next-key lock 是实现行锁和间隙锁的关键部分。在 next-key lock 的机制中&#xff0c;supremum pseudo-record 是一个特殊的存在&…

排序算法【归并排序】

一、归并排序算法的原理 如下面数组所示进行归并排序。 对左半部分进行排序操作。 对左半部分进行归并操作。 二、归并排序 #include <stdio.h> #include "test.h"/* 归并排序法* arr:数组的首地址指针* begin:需要排序数组的起始序号* len:数组的长度*/ void…

微信小程序保存图片到相册

申请权限 代码如下 wx.downloadFile({url: image, //仅为示例&#xff0c;并非真实的资源success(res) {// 只要服务器有响应数据&#xff0c;就会把响应内容写入文件并进入 success 回调&#xff0c;业务需要自行判断是否下载到了想要的内容if (res.statusCode 200) {consol…

SpringBoot-04--整合登录注册动态验证码

文章目录 效果展示1.导入maven坐标2.编写代码生成一个验证码图片3.前端如何拿到验证码4. 后端生成验证码5前端代码 效果展示 效果&#xff0c;每次进入页面展现出来不同的验证码。 技术 使用别人已经写好的验证码生成器&#xff0c;生成图片&#xff0c;转为Base64编码&#x…

IndexError: list index out of range | 列表索引超出范围完美解决方法

IndexError: list index out of range &#x1f4c9; | 列表索引超出范围完美解决方法 IndexError: list index out of range &#x1f4c9; | 列表索引超出范围完美解决方法摘要 &#x1f4c4;引言 &#x1f680; 什么是 IndexError: list index out of range&#xff1f;&…

论文翻译:Jailbroken: How Does LLM Safety Training Fail?

越狱&#xff1a;LLM安全训练为何失败&#xff1f; 文章目录 越狱&#xff1a;LLM安全训练为何失败&#xff1f;摘要1 引言1.1 相关工作 2 背景&#xff1a;安全训练的语言模型和越狱攻击2.1 对受限行为的越狱攻击2.2 评估安全训练的语言模型 3 失败模式&#xff1a;目标冲突和…

自然语言处理工程师的薪资待遇高吗?工作职责是什么呢?

自然语言处理&#xff0c;通常称为NLP&#xff0c;是计算机科学、人工智能和语言学的交叉领域&#xff0c;侧重于使计算机理解、解释并生成人类语言。在分析海量文本数据和开发可处理文本数据系统方面&#xff0c;NLP工程师发挥着至关重要的作用&#xff0c;这些数据可用于搜索…

Fast API + LangServe快速搭建 LLM 后台

如果快速搭建一个 LLM 后台 API&#xff0c;使前端可以快速接入 LLM API。LangChain 或者 LlamaIndex 架构都可以快速集成各种大语言模型&#xff0c;本文将讲述如何通过 Fast API LangServe 快速的搭建一个后台 Rest API 服务。LLM 这些框架现在主打一个就是快速&#xff0c;…

网络状态码都是怎么回事,怎么监测状态码

一、状态码概览 HTTP状态码&#xff0c;作为HTTP协议中不可或缺的一部分&#xff0c;是服务器对客户端请求处理结果的直观反馈。它们由三位数字构成&#xff0c;蕴含着丰富的信息&#xff1a;首位数字定义了响应的大类&#xff0c;后两位则进一步细化了具体状态或错误类型。主…

13 Listbox 组件

13 Listbox 组件 Tkinter 的 Listbox 组件是一个用于显示列表项的控件&#xff0c;用户可以从中选择一个或多个项目。以下是对 Listbox 组件的详细说明和一个使用案例。 Listbox 组件属性 基本属性 width: 控件的宽度&#xff0c;通常以字符数为单位。height: 控件的高度&a…

【C++】String常见函数用法

一、string类对象的常见构造 我们可采取以下的方式进行构造&#xff0c;以下是常用的接口&#xff1a; //生成空字符串 string; //拷贝构造函数 string(const string& str); //用C-string来构造string类对象 string(const char* s); //string类对象中包含n个字符c strin…

C++ 之网络编程基础复习总结

基础 IP 地址可以在网络环境中唯一标识一台主机。 端口号可以在主机中唯一标识一个进程。 所以在网络环境中唯一标识一个进程可以使用 IP 地址与端口号 Port 。 字节序 TCP/IP协议规定&#xff0c;网络数据流应采用大端字节序。 大端&#xff1a;低地址存高位&#xff0c…

FastCopy文件快速复制v5.7.15

软件介绍 FastCopy文件快速复制工具。Windows平台上最快的文件复制、删除软件&#xff01;功能强劲&#xff0c;性能优越&#xff01;它是源于日本的高效文件复制加速软件&#xff0c;支持拖拽操作&#xff0c;三种不同HDD模式&#xff1b;支持通配符&#xff0c;任务管理/命令…

XSS项目实战

目录 一、项目来源 二、实战操作 EASY 1 2 3 4 5 6 7 8 一、项目来源 XSS Game - Learning XSS Made Simple! | Created by PwnFunction 二、实战操作 EASY 1 1.Easy -1 2.题目要求及源码 Difficulty is Easy.Pop an alert(1337) on sandbox.pwnfunction.com.No …

基于STM32开发的智能植物浇水系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化土壤湿度检测与浇水控制显示与状态指示Wi-Fi通信与远程监控应用场景 家庭植物自动浇水农业智能灌溉系统常见问题及解决方案 常见问题解决方案结论 1. 引言 智能植物浇水系统通过集…

学习记录第二十九天

信号量————来描述可使用资源的个数 信号量&#xff08;Semaphore&#xff09;是一种用于控制多个进程或线程对共享资源访问的同步机制。在C语言中&#xff0c;通常我们会使用POSIX线程&#xff08;pthread&#xff09;库来实现信号量的操作 信号量有两个主要操作&#xf…

【学习总结】JVM篇

JVM JVM基础知识 主力机型 HotSpot VM HotSpot虚拟机时OpenJDK和OracleJDK中默认的Java虚拟机。它最初并非由Sun公司所开发&#xff0c;而是由一家名为“Longview Technologies”的小公司设计。Sun公司注意到这款虚拟机在即时编译等多个方面有着优秀的理念和实际成果&#…

【Redis】字符串数据类型深入解析与应用实践

目录 String 字符串常⻅命令计数命令其他命令命令⼩结内部编码典型使⽤场景 String 字符串 字符串类型是 Redis 最基础的数据类型&#xff0c;关于字符串需要特别注意&#xff1a;1&#xff09;⾸先 Redis 中所有的键的类型都是字符串类型&#xff0c;⽽且其他⼏种数据结构也都…

牙科就诊管理系统--论文pf

TOC springboot399牙科就诊管理系统--论文pf 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;…