how2j.cn


工具版本兼容问题
java的图形界面中,容器是用来存放 按钮,输入框等组件的。

窗体型容器有两个,一个是JFrame,一个是JDialog


本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



3分27秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器



步骤 1 : JFrame   
步骤 2 : JDialog   
步骤 3 : 模态JDialog   
步骤 4 : 窗体大小不可变化   
步骤 5 : 练习-模态与大小变化   
步骤 6 : 答案-模态与大小变化   

JFrame是最常用的窗体型容器,默认情况下,在右上角有最大化最小化按钮
JFrame
package gui; import javax.swing.JButton; import javax.swing.JFrame; public class TestGUI { public static void main(String[] args) { //普通的窗体,带最大和最小化按钮 JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(null); JButton b = new JButton("一键秒对方基地挂"); b.setBounds(50, 50, 280, 30); f.add(b); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
JDialog也是窗体型容器,右上角没有最大和最小化按钮
JDialog
package gui; import javax.swing.JButton; import javax.swing.JDialog; public class TestGUI { public static void main(String[] args) { //普通的窗体,带最大和最小化按钮,而对话框却不带 JDialog d = new JDialog(); d.setTitle("LOL"); d.setSize(400, 300); d.setLocation(200, 200); d.setLayout(null); JButton b = new JButton("一键秒对方基地挂"); b.setBounds(50, 50, 280, 30); d.add(b); d.setVisible(true); } }
当一个对话框被设置为模态的时候,其背后的父窗体,是不能被激活的,除非该对话框被关闭
package gui; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("外部窗体"); f.setSize(800, 600); f.setLocation(100, 100); // 根据外部窗体实例化JDialog JDialog d = new JDialog(f); // 设置为模态 d.setModal(true); d.setTitle("模态的对话框"); d.setSize(400, 300); d.setLocation(200, 200); d.setLayout(null); JButton b = new JButton("一键秒对方基地挂"); b.setBounds(50, 50, 280, 30); d.add(b); f.setVisible(true); d.setVisible(true); } }
步骤 4 :

窗体大小不可变化

edit
通过调用方法 setResizable(false); 做到窗体大小不可变化
package gui; import javax.swing.JButton; import javax.swing.JFrame; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(null); JButton b = new JButton("一键秒对方基地挂"); b.setBounds(50, 50, 280, 30); f.add(b); // 窗体大小不可变化 f.setResizable(false); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
步骤 5 :

练习-模态与大小变化

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
首先设计一个JFrame,上面有一个按钮,文字是 "打开一个模态窗口"。

点击该按钮后,随即打开一个模态窗口。

在这个模态窗口中有一个按钮,文本是 "锁定大小", 点击后,这个模态窗口的大小就被锁定住,不能改变。 再次点击,就回复能够改变大小
练习-模态与大小变化
步骤 6 :

答案-模态与大小变化

edit
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 中级总计0个答案 (总共需要0积分)
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 中级总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

1分31秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器


package gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; public class TestGUI { public static void main(String[] args) { //普通的窗体,带最大和最小化按钮 JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(null); JButton b = new JButton("打开一个模态窗口"); b.setBounds(50, 50, 280, 30); b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JDialog d = new JDialog(f); d.setTitle("这是一个模态窗口"); d.setModal(true); d.setSize(200, 150); d.setLocationRelativeTo(f); JButton b =new JButton("锁定大小"); d.add(b); b.addActionListener(new ActionListener() { boolean resizable = false; @Override public void actionPerformed(ActionEvent e) { d.setResizable(resizable); resizable = !resizable; b.setText(resizable?"解锁大小":"锁定大小"); } }); d.setVisible(true); } }); f.add(b); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2022-03-28 练习-模态与大小变化
Jim_HOW




RT
package gui;

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

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;

public class TestGUI {
	public static void main(String[] args) {

		// 主窗体
		JFrame f = new JFrame("练习");
		f.setSize(400, 300);// 大小
		f.setLocation(200, 200);// 位置
		f.setLayout(null);// 组件

		// 主窗体按钮
		JButton b = new JButton("打开一个模态窗口");
		b.setBounds(50, 50, 280, 30);// 位置大小
		// 给主窗体按钮添加监听器
		b.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 模态对话框
				JDialog d = new JDialog(f);
				d.setModal(true);// 模态
				d.setTitle("模态对话框");// 标题
				d.setSize(200, 200);// 大小
				d.setLocation(300, 300);// 位置
				d.setLayout(null);// 组件
				// 对话框按钮
				JButton b1 = new JButton("锁定大小");// 按钮
				b1.setBounds(20, 50, 150, 30);// 位置大小
				// 给对话框按钮添加监听器
				b1.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						if (d.isResizable()) {
							d.setResizable(false);
							b1.setText("解锁大小");
						} else {
							d.setResizable(true);
							b1.setText("锁定大小");
						}
					}
				});
				d.add(b1);// 添加按钮
				d.setVisible(true);// 渲染

			}
		});

		f.add(b);// 添加按钮
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 窗体关闭程序终止
		f.setVisible(true);// 渲染
	}
}

							


2 个答案

瀚宇
答案时间:2023-02-15
打卡

干就完了
答案时间:2022-05-30



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2021-10-12 练习 - 模态与大小变化
莫諾




首先设计一个JFrame,上面有一个按钮,文字是 "打开一个模态窗口"。 点击该按钮后,随即打开一个模态窗口。 在这个模态窗口中有一个按钮,文字是 "锁定大小", 点击后,这个模态窗口的大小就被锁定住,不能改变。 再次点击,就回复能够改变大小
加载中
JFrame f = new JFrame("KoKo");
		f.setSize(400, 300);
		f.setLocation(200, 200);
		f.setLayout(null);
		JButton b = new JButton("打开一个模态窗口");
		b.setBounds(50, 50, 280, 30);
		JButton c = new JButton("锁定大小");
		c.setBounds(80, 30, 90, 30);
		
		f.add(b);
		
		JDialog d = new JDialog(f);
		d.setModal(true);		
		d.setTitle("模态的对话框");
		d.setSize(260, 120);
		d.setLocation(270, 320);
		d.setLayout(null);		
		d.add(c);
		
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
		
		b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            	d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
                d.setVisible(true);
            }
        });
		c.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
                if (c.getText() == "锁定大小") {
            		d.setResizable(false);
                    c.setText("解锁大小");
                } else if(c.getText() == "解锁大小") {
                	d.setResizable(true);
                    c.setText("锁定大小");
                }
            }
        });	

							





回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2021-04-30 打卡
2021-04-14 重新写一下
2021-03-31 回答


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 13 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 中级-图形界面-容器 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图