如何动态改变Frame的大小?

博客围绕JavaScript、HTML元素展开,涉及button、input等元素,以及在浏览器环境下function的运用,体现了前端开发中JavaScript与HTML元素交互的相关内容。
简介:我想大家应该见过有些网站如Msdn.microsoft.com内一些分帧的页面在按下页面的某个按钮后,页面中的某个帧就会隐藏了,其实这种效果实现起来挺简单的,现在我们就来看看如何用Javascript来访问和修改Frame对象。
1.在开始前我先讲一下Frame的结构与语法: //下面是一个用frame页面的帧的代码
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<frameset rows="117,498"> //如图这代表黄色框的分帧结构为上下分[rows表示上下 cols表示左右] 上为117下为498 包含top.htm与包含left.htm与main.htm的红色框的对象这两个属于同一级对象
<frame src="top.htm">
<frameset id=frame_bottom cols="200,*"> //这表示的是红色框内的分帧结构为左右左是200,右是除了左帧占据200后的所有空间,在这里我给了这个frameset一个id:frame_bottom这是为了方便后面用Javascript来访问这个对象
<frame src="left.htm">
<frame src="main.htm">
</frameset>
</frameset>
<noframes> //这是的用来显示当浏览器不支持frame时显示的页面内容
<body bgcolor="#FFFFFF" text="#000000">
你的浏览器不支持frame
</body>
</noframes>
</html>

2.动态修改frameset的内容

看完上面的代码你应该知道定义 frame_bottom 这个frameset对象的结构代码为 cols="200,*" 下面是动态修改的代码
<input type="button" name="Button" value="点这按钮将关闭左边的帧" onClick=reSetFrames()>
<script language="JavaScript">
function reSetFrames(){
top.frame_bottom.cols=(top.frame_bottom.cols=="0,*")?"200,*":"0,*"; //top代表的是所有frame对象的最高级对象也就是上面定义整体结构的代码,top.frame_bottom 就取得红色框这个对象,然后就修改 top.frame_bottom 对象的cols属性为一个新的值.来达到隐藏帧的效果
}
</script>
<think>好的,用户的问题是关于如何在Java中使用JFrame禁止调整窗口大小并设置固定尺寸。我需要结合之前的引用内容来回答。首先,用户提到了setResizable方法,引用1和引用2都提到了这个方法,传入false就可以禁止调整窗口大小。然后,设置固定大小可以用setSize或者setPreferredSize,但要注意可能需要调用pack方法,尤其是当使用布局管理器的时候。引用2中的例子用了setSize(400,400),然后setResizable(false)。另外,引用4提到在不可调整大小的容器中要注意边界和字体的问题,可能需要确保布局正确。用户可能还希望窗口在显示时位置合适,所以可能需要用setLocationRelativeTo(null)来居中。综合这些信息,我应该分步骤说明,先禁止调整大小,然后设置尺寸,可能还要考虑布局和pack的使用。同时,要提醒用户注意不同平台下的表现差异。最后,生成相关问题的时候,可以考虑布局管理、事件线程、其他窗口属性设置等。</think>在Java中实现JFrame固定窗口大小可通过以下方法分步实现: ### 一、禁止调整窗口大小 调用`setResizable(false)`方法: ```java JFrame frame = new JFrame(); frame.setResizable(false); // 关键代码 ``` 该方法直接禁用窗口最大化按钮和拖拽调整功能[^1][^2] ### 二、设置固定尺寸(两种方式) 1. **精确尺寸设定** ```java frame.setSize(800, 600); // 单位像素 frame.setPreferredSize(new Dimension(800, 600)); frame.pack(); // 配合布局管理器使用更准确[^3] ``` 2. **动态计算尺寸** ```java frame.pack(); // 自动计算组件所需空间 frame.setResizable(false); ``` ### 三、完整示例代码 ```java public class FixedSizeFrame { public static void main(String[] args) { JFrame frame = new JFrame("固定窗口"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 添加组件 JPanel panel = new JPanel(); panel.add(new JLabel("不可调整大小的窗口")); frame.add(panel); // 设置窗口属性 frame.setSize(400, 300); frame.setResizable(false); frame.setLocationRelativeTo(null); // 居中显示 frame.setVisible(true); } } ``` ### 注意事项 1. 建议在EDT(事件分发线程)中执行GUI操作 2. 使用`pack()`时需确保所有组件已完成布局[^3] 3. 不同操作系统下边框渲染可能有差异[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值