如何成功将自制Applet游戏嵌入JFrame并禁用窗口调整大小?
把Applet游戏嵌入JFrame并禁用窗口调整大小的正确姿势
嘿,我懂你想把自己用Applet做的游戏放进JFrame里,还想解决窗口能随意拉伸的问题——咱们来把你的代码调整得更靠谱些!
首先看你给出的代码,有几个小细节得修正,不然可能编译或者运行出问题:
import java.applet.Applet; import javax.swing.JFrame; public class Game extends Applet { // 类名首字母大写是Java规范哦 JFrame f = new JFrame(); // 构造方法要加括号,不然语法错啦 public Game() { // 去掉Applet的resize,因为JFrame会负责管理它的尺寸 f.setSize(500, 500); f.add(this); f.setResizable(false); // 这步是对的,直接禁用窗口调整 // 一定要加这句,不然关闭窗口后程序还在后台跑 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
然后给你解释下关键的调整点:
- 把类名
game改成Game,符合Java的命名规范,能避免一些不必要的潜在问题 - 补全构造方法的括号
Game(),不然编译器直接会报错,根本跑不起来 - 删掉了
this.resize(500,500),因为当你把Applet添加到JFrame后,它的尺寸会由JFrame的布局管理器控制,单独调用resize基本没啥作用 - 加上
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE),这个很重要——默认情况下JFrame关闭只是隐藏窗口,程序进程还在后台运行,加了这句才能彻底退出程序 - 保留你原来的
f.setResizable(false),这就是禁用窗口调整大小的核心代码,你这步的思路完全正确
另外,如果你想让Applet刚好填满JFrame的内容区域,其实不用额外设置,因为JFrame默认的BorderLayout布局会让添加的组件自动填充整个窗口。如果你不需要固定500x500的尺寸,也可以用f.pack()代替f.setSize(500,500),让窗口自动适配Applet的最佳大小。
内容的提问来源于stack exchange,提问作者Mr. T
相关产品推荐
相关产品推荐

