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,待学习其他容器组件和布局管理器后可实现。