Java Swing JDialog对话框的用法(附带实例)
JDialog 对话框继承了 java.awt.Dialog 类,其功能是从一个窗体中弹出另一个窗体,如使用 IE 浏览器时弹出的确定对话框。
JDialog 对话框与 JFrame 窗体类似,被使用时也需要先调用 getContentPane() 方法把 JDialog 对话框转换为容器,再对 JDialog 对话框进行设置。
JDialog 类常用的构造方法如下:
【实例】在窗体中弹出对话框。创建 MyJDialog 类,使之继承 JDialog 窗体,在父窗体中添加按钮,当用户单击按钮时,弹出对话框。

图:从父窗体中弹出对话框
JDialog 对话框与 JFrame 窗体类似,被使用时也需要先调用 getContentPane() 方法把 JDialog 对话框转换为容器,再对 JDialog 对话框进行设置。
JDialog 类常用的构造方法如下:
- public JDialog(): 创建一个没有标题和父窗体的对话框;
- public JDialog(Frame f): 创建一个没有标题,但指定父窗体的对话框;
- public JDialog(Frame f, boolean model): 创建一个没有标题,但指定父窗体和模式的对话框。如果 model 为 true,那么弹出对话框后,用户无法操作父窗体;
- public JDialog(Frame f, String title): 创建一个指定标题和父窗体的对话框;
- public JDialog(Frame f, String title, boolean model): 创建一个指定标题、父窗体和模式的对话框。
【实例】在窗体中弹出对话框。创建 MyJDialog 类,使之继承 JDialog 窗体,在父窗体中添加按钮,当用户单击按钮时,弹出对话框。
import java.awt.*; import java.awt.event.*; import javax.swing.*; class MyJDialog extends JDialog { // 自定义对话框类,继承 JDialog public MyJDialog(MyFrame frame) { // 调用父类构造方法,第一个参数是父窗体,第二个参数是窗体标题,第三个参数表示阻塞父窗体 super(frame, "第一个 JDialog 窗体", true); Container container = getContentPane(); // 获取主容器 container.add(new JLabel("这是一个对话框")); // 在容器中添加标签 setBounds(120, 120, 100, 100); // 设置对话框窗体在桌面显示的坐标和大小 } } public class MyFrame extends JFrame { // 自定义窗体类,继承 JFrame public MyFrame() { // 窗体的构造方法 Container container = getContentPane(); // 获取窗体主容器 container.setLayout(null); // 容器使用绝对布局 JButton bl = new JButton("弹出对话框"); // 创建一个按钮 bl.setBounds(10, 10, 100, 21); // 定义按钮在容器中的坐标和大小 bl.addActionListener(new ActionListener() { // 为按钮添加单击事件 public void actionPerformed(ActionEvent e) { // 单击事件触发的方法 MyJDialog dialog = new MyJDialog(this); // 创建 MyJDialog 对话框 dialog.setVisible(true); // 使对话框可见 } }); container.add(bl); // 将按钮添加到容器中 setSize(200, 200); // 窗体的宽高 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 关闭窗体则停止程序 setVisible(true); // 使窗体可见 } public static void main(String args[]) { new MyFrame(); } }运行结果如下图所示:

图:从父窗体中弹出对话框