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-12-09 交作业
或闪




安逸
package gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

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

public class Test模态练习 {
	public static void main(String[] args) {
		JFrame f = new JFrame("练习1");
		f.setSize(800,600);
		f.setLocation(200,200);
		JButton b = new JButton("打开一个模态窗口");
		b.setBounds(50,50,280,30);
		f.add(b);
		JDialog d = new JDialog(f);
		d.setModal(true);
		d.setSize(400,300);
		d.setLocation(250, 250);
		d.setLayout(null);
		
		JButton b2=new JButton("锁定大小");
		b2.setBounds(50,50,100,30);
		d.add(b2);
		b.addMouseListener(new MouseAdapter() {
			
			@Override
			public void mouseReleased(MouseEvent e) {
				// TODO Auto-generated method stub
				d.setVisible(true);
			}
			
		});
		b2.addMouseListener(new MouseAdapter() {
		
			
			@Override
			public void mouseReleased(MouseEvent e) {
				// TODO Auto-generated method stub
				if(d.isResizable())
				{
					d.setResizable(false);
				}
				else
				{
					d.setResizable(true);
				}
				
			}
		});
		f.setVisible(true);
	}
}

							





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





2019-11-27 作业-模态与大小变化
逆光逆时针




仅供参考
package gui;

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

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

/**
 * 练习-模态与大小变化
 * 
 * 	首先设计一个JFrame,上面有一个按钮,文字是 "打开一个模态窗口"。
	点击该按钮后,随即打开一个模态窗口。
	在这个模态窗口中有一个按钮,文本是 "锁定大小", 点击后,这个模态窗口的大小就被锁定住,不能改变。 再次点击,就回复能够改变大小
 */

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

		JFrame f = new JFrame("LOL");
		f.setSize(400, 300);
		f.setLocation(580, 200);
		f.setLayout(null);

		JButton b1 = new JButton("打开一个模态窗口");
		b1.setBounds(50, 50, 280, 30);

		f.add(b1);

		JDialog d = new JDialog(f);
		d.setModal(true);
		d.setTitle("这是一个模态窗口");
		d.setSize(200, 150);
		d.setLocation(650, 300);
		d.setLayout(null);

		JButton b2 = new JButton("锁定大小");
		b2.setBounds(50, 50, 100, 30);

		d.add(b2);

		// 增加按钮监听器
		b1.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				d.setVisible(true);
			}
		});

		b2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				if (b2.getText() == "锁定大小") {
					d.setResizable(false);
					b2.setText("解锁大小");
				} else {
					d.setResizable(true);
					b2.setText("锁定大小");
				}
			}
		});

		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

}

							


1 个答案

南风顾sir
答案时间:2019-12-08
交作业



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





2019-11-12 模态
2019-09-30 模态与大小变化
2019-09-13 作业
2019-08-17 交作业
2019-08-14 提交作业
2019-08-14 模态窗口
2019-07-26 交作业
2019-07-17 为什么模态窗口中的按钮没有边框效果????既定在正中间吗?
2019-06-20 ZZ交作业 模态窗口锁定/解锁大小
2019-06-14 交作业
2019-06-05 为什么模态窗口开启绝对定位就出不来button组件
2019-03-31 交作业
2019-03-19 作业
2019-03-15 作业~
2019-03-15 交作业了
2019-03-09 作业!咯~!
2019-03-09 作业!咯~!
2019-02-27 作业
2019-01-24 作业
2019-01-23 交作业
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群交流: 982790551
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图