You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何成功将自制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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:35:17