【Java AWT 图形界面编程】Dialog 对话框 ( 简介 | 模式对话框 | 非模式对话框 | Dialog 构造函数 | Dialog 代码示例 | 向 Dialog 对话框添加布局组件 )





一、Dialog 对话框简介



Dialog 对话框 是 Window 的子类 , 在 AWT 图形界面编程 中 , 最常见的 三种 Container 容器就是 Frame , Dialog , Panel ;


Dialog 对话框 需要 依赖一个 Frame 窗口 , 该 Frame 窗口就是该对话框的父窗口 , 一旦关闭父窗口 , 则其附属的 Dialog 对话框也会一同关闭 ;


Dialog 对话框有两种模式 :

  • 非模式 : 对话框 与 窗口 是 相对独立的 , 互不影响 ;
  • 模式 : 对话框总是位于 父窗口 上面 , 对话框没有关闭时 , 父窗口无法操作 ;

Dialog 与 Window 的关系如下图 , Window 类有 2 个子类 , Frame 窗口类 和 Dialog 对话框类 ;

在这里插入图片描述





二、Dialog 构造函数



Dialog 构造函数 原型 :

  • Frame owner 参数 : 是 Dialog 对话框 依赖的父窗口 , 也就是在该窗口中创建的 Dialog 对话框 ;
  • String title 参数 : Dialog 对话框的 标题 ;
  • boolean modal 参数 : 设置对话框是 模式 还是非模式 , true 为模式 抢占父窗口焦点 , false 为非模式 与 父窗口独立操作 ;
    public Dialog(Frame owner, String title, boolean modal) {
        this(owner, title, modal ? DEFAULT_MODALITY_TYPE : Dialog.ModalityType.MODELESS);
    }

Dialog 构造函数 原型 文档 :

    /**
     * Constructs an initially invisible <code>Dialog</code> with the
     * specified owner <code>Frame</code>, title and modality.
     *
     * @param owner the owner of the dialog or <code>null</code> if
     *     this dialog has no owner
     * @param title the title of the dialog or <code>null</code> if this dialog
     *     has no title
     * @param modal specifies whether dialog blocks user input to other top-level
     *     windows when shown. If <code>false</code>, the dialog is <code>MODELESS</code>;
     *     if <code>true</code>, the modality type property is set to
     *     <code>DEFAULT_MODALITY_TYPE</code>
     * @exception java.lang.IllegalArgumentException if the <code>owner</code>'s
     *    <code>GraphicsConfiguration</code> is not from a screen device
     * @exception HeadlessException when
     *    <code>GraphicsEnvironment.isHeadless()</code> returns <code>true</code>
     *
     * 构造一个初始不可见的对话框与指定的所有者框架,标题和模式。
     * @param owner对话框的所有者,如果这个对话框没有所有者,则为空
     * @param title对话框的标题,如果对话框没有标题,则为空
     * @param modal指定对话框显示时是否阻止用户输入到其他顶级窗口。如果为false,则对话框为MODELESS;
     * 如果为真,则modality类型属性设置为DEFAULT_MODALITY_TYPE
     * @exception java.lang.IllegalArgumentException如果所有者
     * GraphicsConfiguration不是来自屏幕设备
     * 当GraphicsEnvironment.isHeadless()返回true时,@exception HeadlessException异常
     *
     * @see java.awt.Dialog.ModalityType
     * @see java.awt.Dialog.ModalityType#MODELESS
     * @see java.awt.Dialog#DEFAULT_MODALITY_TYPE
     * @see java.awt.Dialog#setModal
     * @see java.awt.Dialog#setModalityType
     * @see java.awt.GraphicsEnvironment#isHeadless
     * @see Component#setSize
     * @see Component#setVisible
     */
    public Dialog(Frame owner, String title, boolean modal) {
        this(owner, title, modal ? DEFAULT_MODALITY_TYPE : Dialog.ModalityType.MODELESS);
    }




三、Dialog 对话框代码示例



要想显示 Dialog 对话框 , 执行下面 3 个步骤操作即可 :

  • 首先 , 创建 Dialog 对话框 ;
  • 然后 , 设置 Dialog 对话框 位置 和 大小 ;
  • 最后 , 设置 Dialog 对话框 可见 ;
        // 1. 创建非模式对话框
        Dialog dialog = new Dialog(frame, "对话框", false);
        // 2. 设置对话框位置及大小
        dialog.setBounds(100, 100, 400, 200);
        // 3. 设置对话框可见 
        dialog.setVisible(true);

代码示例 :

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class HelloAWT {
    public static void main(String[] args) {
        Frame frame = new Frame("AWT 图形界面编程");

        // 创建非模式对话框
        Dialog dialog = new Dialog(frame, "对话框", false);
        // 设置对话框位置及大小
        dialog.setBounds(100, 100, 400, 200);

        // 设置打开对话框按钮
        Button button = new Button("打开对话框");
        frame.add(button);

        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dialog.setVisible(true);
            }
        });

        frame.pack();
        frame.setVisible(true);
    }
}

执行结果 :

在这里插入图片描述





四、向 Dialog 对话框添加布局组件



【Java AWT 图形界面编程】Frame 窗口标题栏大小问题 ( Container 容器的空白边框 Insets | 通过调用 frame.getInsets().top 获取窗口标题栏高度 ) 博客中的布局组件放到对话框中 ;


在第一章已经提到 Dialog 是 Window 的子类 , Dialog 也是 Container 容器的一种 , 可以设置布局管理器 , 可以向其中添加子组件 ;


代码示例 :

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class HelloAWT {
    public static void main(String[] args) {
        Frame frame = new Frame("AWT 图形界面编程");

        // 创建非模式对话框
        Dialog dialog = new Dialog(frame, "对话框", false);
        dialog.setLayout(null);
        // 设置对话框位置及大小
        dialog.setBounds(100, 100, 300, 331);

        // 设置 5 个布局, 分别在 4 个角和 中心位置显示

        // 绘制左上角布局
        Panel panel1 = new Panel();
        panel1.setBackground(Color.BLUE);
        panel1.setBounds(0, 31, 100, 100);
        dialog.add(panel1);

        // 绘制右上角布局
        Panel panel2 = new Panel();
        panel2.setBackground(Color.RED);
        panel2.setBounds(200, 31, 100, 100);
        dialog.add(panel2);

        // 绘制左下角布局
        Panel panel3 = new Panel();
        panel3.setBackground(Color.BLACK);
        panel3.setBounds(0, 231, 100, 100);
        dialog.add(panel3);

        // 绘制右下角布局
        Panel panel4 = new Panel();
        panel4.setBackground(Color.GREEN);
        panel4.setBounds(200, 231, 100, 100);
        dialog.add(panel4);

        // 绘制中间布局
        Panel panel5 = new Panel();
        panel5.setBackground(Color.MAGENTA);
        panel5.setBounds(100, 131, 100, 100);
        dialog.add(panel5);


        // 设置打开对话框按钮
        Button button = new Button("打开对话框");
        frame.add(button);

        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dialog.setVisible(true);
            }
        });

        frame.pack();
        frame.setVisible(true);
    }
}

执行结果 :

在这里插入图片描述

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
完整全套资源下载地址:https://download.csdn.net/download/qq_27595745/71331017 【完整课程列表】 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_01 Java概述与应用 Eclipse 集成环境使用 (共16页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_01 Java概述与应用 Eclipse+MyEclipse+Tomcat安装(第1章) (共20页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_01 Java概述与应用 JAVA_01Java概述与应用 (共89页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_01 Java概述与应用 前言 学习java前的准备工作 (共4页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_02 面向对象(OO)程序设计概念 (共51页).PPT 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_03 JAVA语言基础 位运算(共21页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_03 JAVA语言基础(共57页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_04 Java面向对象特性(共41页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_05 高级语言特征(共65页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_06 异常处理Exceptions(共31页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_07 IO输入输出(共30页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_08 AWT图形界面编程 JFC AWT Swing(共56页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_08 AWT图形界面编程 JFC Swing (共22页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_09 Applet (共33页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_10 线程(共51页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_11 网络程序设计(共26页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_12 JFC Swing (共20页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_13 JDBC(共15页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_13 JDBC编程(共31页).ppt JAVA_01Java概述与应用\God.java JAVA_01Java概述与应用\Human.java JAVA_01Java概述与应用\javaapplet.html JAVA_01Java概述与应用\WelcomeJava.java JAVA_01Java概述与应用\WelcomeJavaApplet.java JAVA_10线程\第十章上机练习题.doc JAVA_11网络程序设计\第11章上机练习题.doc JAVA_11网络程序设计\邮件发送源码.rar JAVA_12 Swing\SwingTest.java JAVA_13 JDBC\Connec.java JAVA_13 JDBC\mysql-5.5.11-win32(1).msi JAVA_13 JDBC\SQLyog832Trial.exe JAVA_13 JDBC\SQLyog832Trial.zip JAVA_13 JDBC\实训项目——Java电子小字典.doc JAVA_2面向对象(OO)程序设计概念\Animal(Polymorphism).java JAVA_2面向对象(OO)程序设计概念\Animal(super).java JAVA_2面向对象(OO)程序设计概念\Animal.class JAVA_2面向对象(OO)程序设计概念\Animal.java JAVA_2面向对象(OO)程序设计概念\Fish.class JAVA_2面向对象(OO)程序设计概念\Integration.class JAVA_2面向对象(OO)程序设计概念\Point.java JAVA_2面向对象(OO)程序设计概念\第二章上机练习题.doc JAVA_3JAVA语言基础\StringTest.java JAVA_3JAVA语言基础\Test.java JAVA_3JAVA语言基础\Welcome.java JAVA_3JAVA语言基础\第三章上机练习题.doc JAVA_4Java面向对象特性\Animal(Poly
好的,以下是一个简单的示例代码,演示如何在模式对话框添加新用户到数据库中: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; public class DialogDemo extends JFrame implements ActionListener { private JTextField nameField; private JPasswordField passwordField; public DialogDemo() { super("添加新用户"); // 创建界面元素 JLabel nameLabel = new JLabel("用户名:"); nameField = new JTextField(20); JLabel passwordLabel = new JLabel("密码:"); passwordField = new JPasswordField(20); // 创建按钮 JButton addButton = new JButton("添加"); addButton.addActionListener(this); JButton cancelButton = new JButton("取消"); cancelButton.addActionListener(this); // 创建面板并添加元素 JPanel panel = new JPanel(new GridLayout(3, 2)); panel.add(nameLabel); panel.add(nameField); panel.add(passwordLabel); panel.add(passwordField); panel.add(addButton); panel.add(cancelButton); // 添加面板到窗口并设置大小 add(panel); setSize(300, 150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("添加")) { String name = nameField.getText(); String password = new String(passwordField.getPassword()); // 连接数据库 try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password"); // 插入数据 String sql = "INSERT INTO users (name, password) VALUES (?, ?)"; PreparedStatement statement = conn.prepareStatement(sql); statement.setString(1, name); statement.setString(2, password); statement.executeUpdate(); // 提示用户添加成功 JOptionPane.showMessageDialog(this, "添加用户成功!", "提示", JOptionPane.PLAIN_MESSAGE); // 关闭连接 statement.close(); conn.close(); } catch (Exception ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(this, "添加用户失败!", "错误", JOptionPane.ERROR_MESSAGE); } } // 关闭窗口 dispose(); } public static void main(String[] args) { new DialogDemo(); } } ``` 以上代码演示了如何创建一个模式对话框,在对话框添加用户名和密码,并将它们插入到 MySQL 数据库中的 users 表中。如果插入成功,则会提示用户添加成功,否则会提示用户添加失败。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值