当前位置: 首页 > java >正文

JavaSwing之-JDialog

JavaSwing之-JDialog

JDialog 是 Java Swing 中用于创建对话框窗口的容器类,继承自 Dialog 类(AWT),常用于显示临时信息、获取用户输入或执行模态操作。它是 javax.swing.JDialog 包中的类。
与 JFrame 不同的是,JDialog 通常依附于一个主窗口(如 JFrame),并可以在需要时弹出,完成交互后关闭。

一、构造方法

JFDialog提供了多个构造方法满足编程爱好者的不同需求,其常见的构造方法如下表所示。

方法名称功能描述
JDialog()创建一个非模态对话框,无依赖、无标题
JDialog(JFrame owner)创建一个非模态对话框,指定拥有它的 JFrame。
JDialog(JFrame owner, String title)创建带标题的非模态对话框。
JDialog(JFrame owner, String title, boolean modal)创建指定模态类型的对话框。

构造方法中如果如果设置模态参数,true表示模态对话框,false表示非模态对话框。如果不设置该参数,默认为非模态对话框。

JFrame frame = new JFrame("对话框应用")
JDialog  dialog1 = new JDialog();//无标题、无依赖、非模态对话框
JDialog  dialog2 = new JDialog(frame,"我的对话框-非模态");//有标题、有依赖、非模态对话框
JDialog  dialog3 = new JDialog(frame,"我的对话框-模态",true);//有标题、有依赖、模态对话框
JDialog  dialog4 = new JDialog(frame,"我的对话框-非模态",false);//有标题、有依赖、非模态对话框

对话框与依赖组件(主窗口)之间有模态和非模态两种表现形式,它们的区别如下表所示。

模态与非模态区别

类型描述使用场景
模态(true)弹出后,用户不能操作主窗口,直到关闭该对话框登录、确认操作、错误提示等
非模态(false)弹出后,仍可以操作主窗口工具面板、日历选择器等辅助功能
二、常用方法
方法名称功能描述
setTitle(String title)设置对话框标题
setSize(int width, int height)设置对话框大小
setLocationRelativeTo(Component c)相对于某个组件居中显示
setModal(boolean b)设置是否为模态对话框
setVisible(boolean b)显示或隐藏对话框
dispose()销毁对话框资源
setUndecorated(boolean b)是否隐藏标题栏和边框(必须在 setVisible 之前调用)
  • setTitle(String title)方法可以设置对话框的标题,已构建对话框可以通过该方法添加或更新标题。
dialog1.setTitle("字体设置对话框");
  • setSize(int width,int height)设置对话框的初始大小,也可以用Dimension对象作为参数。
//基于当前屏幕分辨率设置对话框尺寸
//获取当前屏幕分辨率封装到Dimension对象中
Dimension   screenSize = Toolkit.getDefaultToolkit().getScreenSize();
//确定对话框的宽、高值
int width = screenSize.width/2;
int height = screenSize.height/2; 
//创建对话框对象
JDialog dialog = new JDialog("对话框");
//设置初始值大小
dialog.setSize(width,height);//dialog.setSize(new Dimension(width,height));
  • setLocationRelativeTo(Component c)设置对话框相对于组件c居中显示,其中c表示组件对象。
//创建一个窗口对象
JFrame frame = new JFrame("窗口");
frame.setSize(600,400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//创建一个对话框对象
JDialog  dialog = new JDialog();//无标题、无依赖、非模态对话框
dialog.setSize(400,300);
dialog.setTitle("字体设置对话框");
dialog.setLocationRelativeTo(frame);//相对窗口居中显示

以上程序结果显示如下。

在这里插入图片描述

  • setModal(boolean b)设置是否为模态对话框。使用该方法可设置或修改对话框的模式
JDialog  dialog = new JDialog(frame,"我是非模态对话框");//有标题、有依赖、非模态对话框
dialog.setModal(true);//设置为模态对话框
  • setUndecorated(boolean b),设置 是否隐藏标题栏和边框,该方法必须在 setVisible 之前调用。当参数为true时隐藏标题栏和边框。

对话框还有许多方法可以被调用完成更加强大的功能,请参考JDK说明文档。

关于更多的综合应用,待学习过常用组件后在综合案例中讲解演示。

三、总结

JDialog 适合用于短期交互任务。根据功能需求选择模态或非模态对话框,最大化体现程序的友好性。

对话框在关闭后应调用 dispose() 释放资源。

如果基于对话框构建功能丰富的 UI,待学习其他容器组件和布局管理器后可实现。

http://www.xdnf.cn/news/6087.html

相关文章:

  • C++类和对象练习:Date类实现日期的差,比较日期的大小,日期的前置后置++,--,输入输出Date类,对默认函数的练习。
  • 数据科学和机器学习的“看家兵器”——pandas模块 之一
  • Docker Compose 的安装方法
  • 使用mermaid 语言绘画时序图和链路图
  • 基于 TensorFlow 框架的联邦学习可穿戴设备健康数据个性化健康管理平台研究
  • Tensorflow2保存和加载模型
  • 2025年PMP 学习十二 第9章 项目资源管理
  • 02_Servlet
  • .Net HttpClient 使用代理功能
  • Leetcode (力扣)做题记录 hot100(62,64,287,108)
  • C#调用C++dll 过程记录
  • 技术债务积累,如何进行有效管理
  • C++ 日志输出(宏定义)
  • 无人机数据处理与特征提取技术分析!
  • 劫持__security_check_cookie
  • 入门OpenTelemetry——部署OpenTelemetry
  • 分布式1(cap base理论 锁 事务 幂等性 rpc)
  • 微信小程序之将轮播图设计为组件
  • “强强联手,智启未来”凯创未来与绿算技术共筑高端智能家居及智能照明领域新生态
  • 【Alist+RaiDrive挂载网盘到本地磁盘】
  • 面向对象设计模式之代理模式详解
  • 如何查看SD卡存储扇区分配表?有什么不同之处
  • 远程连接电脑的方法?异地远程桌面连接和三方软件实现
  • Java 重试机制详解
  • QT之QComboBox组件
  • 软考 系统架构设计师系列知识点之杂项集萃(59)
  • 【springcloud学习(dalston.sr1)】Eureka单个服务端的搭建(含源代码)(三)
  • Python 常用模块(八):logging模块
  • 基于GpuGeek平台的深度学习项目
  • Keil5 MDK 安装教程