Swing程序设计(3)JDialog窗体

简介: Swing程序设计(3)JDialog窗体

前言

       JDialog窗体是窗体中的另一种类型的窗体,指对话框窗体。与JFrame窗体类似,绝大部分对于JFrame窗体使用的方法,对于JDialog窗体也同样适用。

一、JDialog窗体的介绍

       JDialog窗体是Swing组件中的对话框组件,继承了AWT组件中的java.awt.Dialog类。JDialog窗体实质上就是另一种类型的窗体。在使用的同时也需要调用 getContentPane() 方法将窗体转换为容器,然后在容器中设置窗体的特性。

二、JDialog窗体的使用

1.JDialog的常用构造方法

       JDialog类的几种常用的构造方法(方法名是可变的):

               (1)public JDialog():创建了一个没有标题和父窗体的对话框

               (2)public JDialog(Frame f):创建了一个有指定父窗体对象的对话框,没有给父窗体标题

               (3)public JDialog(Frame f, Boolean model):创建了一个指定类型的对话框,并指定了父窗体,没有给父窗体标题

               (4)public JDialog(Frame f,String title):创建了一个指定父窗体和父窗体标题的对话框

               (5)public JDialog(Frame f,String title,boolean modle):创建了一个指定了父窗体,父窗体标题和对话框模式的对话框。

               实例展示(展示的是最全的第五个,以上方法使用方式一致,引用参数不同):

import javax.swing.*;
import java.awt.*;
public class JDialogDemo2{
    public JDialogDemo2(Frame f, String title, boolean modle) {
        //创建一个新的特定的对话框窗体,可指定了窗体对象,标题,和模式
        JDialog dialog = new JDialog(f, title, modle);
        //设定对话框窗体的大小
        dialog.setSize(300, 200);
        //设定对话框窗体的关闭方式
        dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        //设定该窗体可见
        dialog.setVisible(true);
    }
    public static void main(String[] args) {
        //创建一个JFrame对象,在实例化JDialogDemo2对象时调用。
        JFrame frame = new JFrame("Main Frame");
        frame.setSize(400, 300);
        //创建一个JDialogDemo2的对象,直接调用JDialogDemo2的构造方法,定义了窗体对象,标题,和模式
        JDialogDemo2 dialogDemo = new JDialogDemo2(frame, "Dialog Title", true);
    }
}

 相关解释:

                       1.创建一个JDialogDemo2的构造方法,其中括号中的内容:第一个值为创建的JFrame对象,第二个值为对话框窗体的标题,第三个为对话框窗体的模式(该参数为布尔值,确定是否为模态)。

注:模态对话框是一种特殊类型的窗口,它阻止用户与应用程序中的其他窗口进行交互,直到该对话框被关闭。这意味着在模态对话框打开期间,用户无法将焦点切换到其他窗口或执行其他操作。只有当模态对话框关闭后,用户才能继续与应用程序进行交互。

          2.setSize()方法:设置组件的高。

setSize(250,100);
//宽250像素,高100像素

  结果展示:

       

                       3.创建一个main静态方法:

                               (1)创建一个JFrame对象,方便在实例化JDialogDemo2有使用的JFrame对象使用。


                               (2)创建一个JDialogDemo2的对象,直接调用JDialogDemo2的构造方法,定义了窗体对象,标题,和模式。        

2.实例展示及分析

       (1)实例介绍:窗体有按钮可以弹出对话框,并且不处理该对话框,无法进行其他操作。

       (2)代码展示:

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class JDialogDemo extends JDialog{
    public JDialogDemo(JFrame frame){
        /*
         * 第一个参数,父窗体对象
         * 第二个参数,对话框标题
         * 弟三个参数,是否阻塞父窗体
         */
        super(frame, "对话框标题", true);
        //对话框阻塞父窗体
        Container c = getContentPane();
        c.add(new JLabel("这是一个对话框"));
        setBounds(100, 100, 100, 100);  //设置窗体坐标和大小
    }
    public static void main(String[] args) {
        JFrame frame = new JFrame("父窗体");
        frame.setBounds(50, 50, 300, 300);
        Container c = frame.getContentPane();
        JButton btn = new JButton("弹出对话框");
        c.setLayout(new FlowLayout());  //设置布局,使用流布局
        c.add(btn);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        btn.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e){
                        JDialogDemo d = new JDialogDemo(frame);
                        d.setVisible(true);
                        //对话框窗体可见,最好在静态方法中使用(涉及到java语言的底层逻辑)
                }
        });//添加动作监听
    }
}

(3)补充解释:

               super关键字调用:调用了JDialog类的构造方法,即 public JDialog(Frame f,String title,boolean modle)

               流布局:流布局(Flow Layout)是一种在图形用户界面(GUI)中常用的布局管理器。它按照组件的添加顺序,从左到右依次排列,并在水平方向上自动换行。        

运行结果:

               

点击按钮

                               

   由于设置为模态对话框,关闭对话框后,才能对父窗体进行操作。


总结

       以上就是对java语言Swing程序设计中JDialog窗体的使用的介绍。技术内容可能有所过时,适合在校新生学习,欢迎补充指正,博主会及时进行反馈。

相关文章
|
分布式计算 并行计算 大数据
Spark学习---day02、Spark核心编程(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(一)
Spark学习---day02、Spark核心编程 RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(一)
614 1
|
Java Maven
从 HTML 模板导出 PDF 文件
学习如何使用 Thymeleaf 和 Flying Saucer PDF 库从 HTML 模板文件中导出 .pdf 文件
1050 0
|
12月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
11255 5
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
8月前
|
Shell 开发工具 git
解决git bash报错:在仓库中检测到可疑的所有权
总的来说,解决“在仓库中检测到可疑的所有权”的报错,关键在于理解和调整文件或目录的所有权。只要我们正确地设置了文件或目录的所有权,那么我们就可以避免这种问题,让Git Bash正常工作。
311 22
解决win11开启移动热点共享手机连上后无法上网的问题
本文提供了解决Windows 11开启移动热点后手机无法上网问题的步骤:通过控制面板进入网络和共享中心,在以太网属性中勾选“允许其他网络用户通过此计算机的Internet连接来连接”,然后手机重新连接共享热点即可上网。
|
前端开发 Java 编译器
Java 仿 IntelliJ IDEA idea的 UI 框架 flatlaf——《我的Java打怪日记》
使用JAVA写界面一直是一个麻烦事,作为一个前端,在写前端页面的时候有不少的UI库可以使用。于是聪明机智的我,就想到也许JAVA上也许会有一个类似的UI库,可以直接引入调用。而作为一个软件,我本人一直欣赏intelliJ编译器的界面,所以就去狠狠的搜索了一下有没有仿照它做出来的UI库。 结果显而易见,是有的!一款叫做 FlatLaf 的 UI 库就是仿照intelliJ编译器做出来的UI库,大家可以通过MAVEN直接引用它,放到自己的软件中去。
|
存储 安全 Java
在 Java 中如何从 ArrayList 中删除空格
【8月更文挑战第23天】
190 1
|
存储 缓存 JSON
详解HTTP四种请求:POST、GET、DELETE、PUT
【4月更文挑战第3天】
72176 5
详解HTTP四种请求:POST、GET、DELETE、PUT
日常报错 - NO constructor found in matching [java.lang.String]解决方法
日常报错 - NO constructor found in matching [java.lang.String]解决方法
868 0
|
Ubuntu 前端开发 Linux
在Linux中,如何创建一个新用户?
在Linux中,如何创建一个新用户?