ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JDialog

2021-06-03 21:00:26  阅读:186  来源: 互联网

标签:JFrame 对话框 swing import jf JDialog


JDialog

JDialog是Swing的一个顶级容器,通常表示对话框

JDialog对话框有两种:模态对话框和非模态对话框

  • 模态对话框:当前对话窗口必须处理完成才能与其它对话窗口交互
  • 非模态对话框:当前对话窗口不用处理完成可以与其它对话窗口交互

常用构造方法

方法声明功能描述
JDialog(Frame owner)创建一个无模式对话框,其中指定的是 Frame作为其所有者,并且是一个空的标题。
JDialog(Frame owner, boolean modal)创建一个具有空标题和指定模态的对话框,并以 Frame作为其所有者。
JDialog(Frame owner, String title)使用指定的标题和指定的所有者框架创建无模式对话框。

JDialog是小窗体,JFrame是大窗体。要想使用小窗体,必须先创建大窗体。也就是说要用JDialog小窗体必须先创建JFrame大窗体

1.创建JFrame窗体对象

import javax.swing.JFrame;

public class Demo2_JDiaog {
	public static void main(String[] args) {
		// 1.创建JFrame窗体对象
		JFrame jf = new JFrame("演示JDialog");
        jf.setSize(300, 400);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
	}
}

  • 改进

    提取方法

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Demo2_JDiaog {
	public static void main(String[] args) {
		createAndShowGUI();
	}

	private static void createAndShowGUI() {
		// 1.创建JFrame窗体对象
		JFrame jf = new JFrame("演示JDialog");
        jf.setSize(300, 400);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
	}
}

​ 使用工具类

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Demo2_JDiaog {
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {

			@Override
			public void run() {
				createAndShowGUI();
			}
		});
	}

	private static void createAndShowGUI() {
		// 1.创建JFrame窗体对象
		JFrame jf = new JFrame("演示JDialog");
        jf.setSize(300, 400);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
	}
}

​ 简化

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Demo2_JDiaog {
	public static void main(String[] args) {
		SwingUtilities.invokeLater(() -> createAndShowGUI());
	}

	private static void createAndShowGUI() {
		// 1.创建JFrame窗体对象
		JFrame jf = new JFrame("演示JDialog");
        jf.setSize(300, 400);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
	}
}

2.创建一个JDialog对话框

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Demo2_JDiaog {
	public static void main(String[] args) {
		SwingUtilities.invokeLater(() -> createAndShowGUI());
	}

	private static void createAndShowGUI() {
		// 1.创建JFrame窗体对象
		JFrame jf = new JFrame("演示JDialog");
        jf.setSize(300, 400);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
		
		// 2.创建一个JDialog对话框
		// JDialog(Frame owner, String title)
		JDialog dialog = new JDialog(jf,"abc");
	}
}

运行一下,是不是发现没有效果呢?有了创建JFrame的前车之鉴,JDialog是不是也可以向JFrame一样创建对象呢?

我们来试一试

​ 让JDialog显示

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Demo2_JDiaog {
	public static void main(String[] args) {
		SwingUtilities.invokeLater(() -> createAndShowGUI());
	}

	private static void createAndShowGUI() {
		// 1.创建JFrame窗体对象
		JFrame jf = new JFrame("演示JDialog");
        jf.setSize(300, 400);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
		
		// 2.创建一个JDialog对话框
		// JDialog(Frame owner, String title)
		JDialog dialog = new JDialog(jf,"abc");
		dialog.setVisible(true);
	}
}

​ 设置JDialog大小

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Demo2_JDiaog {
	public static void main(String[] args) {
		SwingUtilities.invokeLater(() -> createAndShowGUI());
	}

	private static void createAndShowGUI() {
		// 1.创建JFrame窗体对象
		JFrame jf = new JFrame("演示JDialog");
		jf.setSize(300, 400);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
		
		// 2.创建一个JDialog对话框
		// JDialog(Frame owner, String title)
		JDialog dialog = new JDialog(jf,"abc");
		dialog.setSize(100, 200);
		dialog.setVisible(true);
	}
}

运行代码我们发现鼠标可以略过JDialog点击JFrame说明JDialog默认是非模态对话框

怎么才能把JDialog变成模态对话框呢?答案是——设置

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Demo2_JDiaog {
	public static void main(String[] args) {
		SwingUtilities.invokeLater(() -> createAndShowGUI());
	}

	private static void createAndShowGUI() {
		// 1.创建JFrame窗体对象
		JFrame jf = new JFrame("演示JDialog");
		jf.setSize(300, 400);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);

		// 2.创建一个JDialog对话框
		// JDialog(Frame owner, String title)
		// 构造方法中传入true,那么就是设置模式为模态对话框
		JDialog dialog = new JDialog(jf, "abc", true);
		dialog.setSize(100, 200);
		dialog.setVisible(true);
	}
}

​ 完整版

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Demo2_JDiaog {
	public static void main(String[] args) {
		SwingUtilities.invokeLater(() -> createAndShowGUI());
	}

	private static void createAndShowGUI() {
		// 1.创建JFrame窗体对象
		JFrame jf = new JFrame("演示JDialog");
		jf.setSize(300, 400);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);

		// 2.创建一个JDialog对话框
		// JDialog(Frame owner, String title)
		// 构造方法中传入true,那么就是设置模式为模态对话框
		JDialog dialog = new JDialog(jf, "abc", true);
		//HIDE_ON_CLOSE为默认值
		dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
		dialog.setSize(100, 200);
		dialog.setVisible(true);
	}
}

总结

  • 模态对话框:必须关闭当前对话窗口才能处理其它对话窗口
  • 非模态对话框:不限制处理窗口的先后顺序

标签:JFrame,对话框,swing,import,jf,JDialog
来源: https://blog.csdn.net/qq_25885671/article/details/117534507

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有