how2j.cn


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

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


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



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



步骤 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 Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
首先设计一个JFrame,上面有一个按钮,文字是 "打开一个模态窗口"。

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

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

答案-模态与大小变化

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

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


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公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2019-01-24 作业
榴芒



交作业
public class ModalTest {
	public static void main(String[] args) {
		JFrame f=new JFrame("父窗口");
		f.setSize(500,500);
		f.setLocation(500, 200);
		f.setLayout(null);
		
		JButton b1=new JButton("打开一个模态窗口");
		b1.setSize(200,50);
		b1.setLocation(150, 150);
		
		JButton b2=new JButton("锁定大小");
		b2.setSize(100,50);
		b2.setLocation(100, 100);
		
		JDialog d=new JDialog(f, "这是一个模态窗口", true);
		d.setSize(300, 200);
		d.setLocation(500, 300);
		d.setVisible(false);
		d.add(b2);
		
		
		b1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				d.setVisible(true);
			}
		});
		
		b2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (b2.getText().equals("锁定大小")) {
					d.setResizable(false);
					b2.setText("解锁");
				}else {
					d.setResizable(true);
					b2.setText("锁定大小");
				}
			}
		});
		f.add(b1);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

							





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





2019-01-23 交作业
zhangsir233



交作业咯
package test_Swing;

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

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

public class Practise01 {
	
	public static void main(String[] args) {
		final JFrame f = new JFrame();
		f.setSize(400,400);
		f.setLocation(300,300);
		f.setLayout(null);
		
		JButton b1 = new JButton();
		b1.setBounds(100,140,200,30);
		b1.setText("打开一个模态窗口");
		
		
		//模态窗口
		final JDialog d = new JDialog(f);
		d.setModal(true);
		d.setTitle("模态的对话框");
		d.setSize(200,200);
		d.setLocation(400,400);
		d.setLayout(null);
		
		//模态里的按钮
		JButton b2 = new JButton();
		b2.setBounds(22,50,150,30);
		b2.setText("锁定/解锁大小");
		d.add(b2);
		
		//b1的监听事件
		b1.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				d.setVisible(true);
			}
		});
		
		//b2的监听事件
		b2.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub\
				if(d.isResizable())
					d.setResizable(false);
				else
					d.setResizable(true);		
			}
		});
		
		f.add(b1);
		f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
		f.setVisible(true);	
	}
}

							





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





2018-12-25 交作业
2018-08-14 作业
2018-08-02 button的监听和鼠标的点击事件监听有区别吗?
2018-08-01 交作业
2018-06-24 模态与大小变化
2017-08-12 JDialog d = new JDialog(f);这括号里的参数有什么意义呢
2017-05-19 我发现有个地方挺值得注意的




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

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

上传截图