如何设置JPanel的宽度和高度?

2023-12-22

我正在使用 Java 开发贪吃蛇游戏。棋盘(所有动作发生的地方)的宽度和高度应该是固定的(640 像素 * 480 像素)。

结构:

  • 主班延伸自JFrame class,
  • Board延伸自的类JPanel class;

In Main类我有类似的东西...

setSize( 1024, 768 );

...在董事会课上我有...

setSize( BOARDS_WIDTH, BOARDS_HEIGHT );

问题是主窗口和唯一窗口似乎是 1024 * 768,但其中的面板 - 不像 640 * 480。我有设置背景()以及背景填充超过 640 * 480。

有什么方法可以使 Board 的宽度和高度像 640 * 480 一样,但主窗口的宽度和高度 - 与 Board 的宽度和高度一样正确?

现在看起来是这样的......

Edit:

所有的工作......几乎。

Main class:

add( new Board(), BorderLayout.CENTER );
pack();
setResizable( false );
setLocationRelativeTo( null );
setVisible( true );
setDefaultCloseOperation( EXIT_ON_CLOSE );
setTitle( "Snake (by daGrevis)" );

Board class:

setPreferredSize( new Dimension( 640, 480 ) );

灰色背景是642*482!就像会有一个边框将所有内容包围 1 个像素!


拜托,出了点事 xxx*x,这根本不是真的,检查一下

JButton Size - java.awt.Dimension[width=400,height=40]
JPanel Size - java.awt.Dimension[width=640,height=480]
JFrame Size - java.awt.Dimension[width=646,height=505]

代码(基本内容来自跟踪:使用 JFC/Swing 创建 GUI http://download.oracle.com/javase/tutorial/uiswing/index.html,但我仍然认为这已经过时了)

编辑:忘记setDefaultCloseOperation()

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class FrameSize {

    private JFrame frm = new JFrame();
    private JPanel pnl = new JPanel();
    private JButton btn = new JButton("Get ScreenSize for JComponents");

    public FrameSize() {
        btn.setPreferredSize(new Dimension(400, 40));
        btn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("JButton Size - " + btn.getSize());
                System.out.println("JPanel Size - " + pnl.getSize());
                System.out.println("JFrame Size - " + frm.getSize());
            }
        });
        pnl.setPreferredSize(new Dimension(640, 480));
        pnl.add(btn, BorderLayout.SOUTH);
        frm.add(pnl, BorderLayout.CENTER);
        frm.setLocation(150, 100);
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // EDIT
        frm.setResizable(false);
        frm.pack();
        frm.setVisible(true);
    }

    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                FrameSize fS = new FrameSize();
            }
        });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置JPanel的宽度和高度? 的相关文章

随机推荐

  • 如何仅禁用/删除输入字段上的第一个空格?

    大家早上好 我有一个案例 当我应该阻止用户在输入字段中输入空格作为第一个字符时 我这里有一个演示 http jsbin com foyetolo 2 edit http jsbin com foyetolo 2 edit 仅当您第一次按空格
  • “this._events || (this._events = {});”是什么意思意思是?

    我已经开始学习 Backbone js 目前我的 JavaScript 技能还不太好 我已经开始检查backbone js文件并遇到了一行奇怪的代码 我无法弄清楚其用途 代码示例 如果您需要更多上下文 请手动下载主干 js http bac
  • JFrame 调整大小以适应可见组件

    我有一个应用程序 我希望用户能够在正常设置和高级设置之间进行选择 现在 如果用户检查 JCheckBox 并且高级设置应该消失 问题就会开始 我的想法是将所有不必要的摆动组件 JScrollPane JLabel 设置为不可见 然后找到一种
  • Rails:如何解压缩压缩的 xml 请求正文?

    我有一个 Rails 3 站点 它从 iPhone 应用程序获取 xml 请求 包括文件提交 iPhone 应用程序压缩其 xml 请求的正文 这些请求像这样传递到我的控制器 这是一个简单的请求 仅更新一些详细信息而不是发送任何文件 par
  • 是什么决定了验证器的触发顺序?

    我有一个带有两个自定义验证器的网络表单 用于验证字符串是否为日期 我不在乎什么格式 只要它是可解析的 另一种方法是确保一个日期等于或大于另一个日期 我只是无法让比较验证器能够很好地处理任何日期格式
  • Windows 上有类似于supervisord 的吗?

    我需要运行 python 脚本并确保它在终止后重新启动 我知道有一个名为supervisord 的UNIX 解决方案 但不幸的是 我的脚本必须运行的服务器是在 Windows 上 你知道什么工具有用吗 谢谢 尽管有很大的免责声明here h
  • “ndarray”类型的对象不可 JSON 序列化

    我是 python 和机器学习的新手 我有一个线性回归模型 它能够根据我转储用于 Web 服务的输入来预测输出 请参阅下面的代码 X train X test y train y test train test split X y test
  • 如何让 Perl::Critic 在其输出中显示违规策略?

    有人告诉我有可能Perl Critic http search cpan org perldoc Perl 3a 3aCritic显示在其输出中存在问题的策略名称 但我不记得我必须做什么才能打开它 如何在perlcritic rc The
  • 将自定义AuthenticationProvider添加到Spring Boot + oauth +oidc

    我使用 SpringBoot 2 1 7 和 Okta 提供身份验证服务开发了一个基本的 oauth oidc 示例 这是我的 Gradle 依赖设置供参考 plugins id org springframework boot versi
  • 如何解决“无法为连接 URL 创建类 'com.mysql.jdbc.Driver' 的 JDBC 驱动程序”

    首先我想说我检查了 stackoverflow 上的所有答案 但我无法修复这个错误 请帮帮我 我花了很多时间 却没有任何结果 我正在尝试使用 Tomcat8 创建连接池 我有一个例外 java sql SQLException 无法创建类的
  • SSH 指纹与 Gitlab.com 不匹配

    我向我的帐户添加了 ED25519 公钥gitlab com 然后我设置了我的 ssh config使用私钥Host gitlab com Host gitlab com gitlab com User git IdentityFile s
  • 将鼠标悬停在 Jquery SlideDown 菜单上时保持该菜单打开吗?

    我的 Jquery SlideDown 菜单遇到一些困难 当我将鼠标悬停在触发slideDown事件的按钮上时 它工作得很好 但是当我将鼠标悬停在向下滑动的子菜单上时 它会触发slideUp事件并关闭菜单 我正在寻找一种方法来更改我的代码
  • 如何在 DIV 中的长单词中强制换行?

    好吧 这真的让我很困惑 我在 div 中有一些内容 如下所示 div style background color green width 200px height 300px Thisisatest Thisisatest Thisisa
  • FFmpeg - 从传输流文件(.ts)中提取视频和音频

    我希望提取传输流文件中某个节目的音视频 ts 方法是在不损失质量的情况下指定其 PID 并在结果文件中使用相同的编解码器 输出文件是 MPEG 是这样吗possible与 FFmpeg 如果是这样 我该怎么办 到目前为止 我已经收到了这个命
  • 如何将 COGROUP 用于大型数据集

    我有两个rdd s namely val tab a RDD String String and val tab b RDD String String 我在用着cogroup对于那些数据集 例如 val tab c tab a cogro
  • 带 JavaScript 控件的 Flash MP3 播放器

    虽然这个问题看起来相当基本 但我似乎无法真正找到符合我需求的任何东西 这些需求是 可换肤 尽管不是 100 必需 可通过 javascript 控制 开始 停止 改变轨道 自定义函数的事件触发器 主要在赛道完成时 实际文档 而不是 它可以做
  • Azure-data-Factory 复制数据如果某个文件存在

    我的 blob 容器中有很多文件 但是 我只想仅当 blob 容器上存在某个文件 例如 SRManifest csv 时才运行存储过程 我在数据工厂上使用了获取元数据和 IF 条件 你能帮我写一下动态脚本吗 我试过这个 bool start
  • 库未加载

    我在应用程序中添加了 Social framework 就像添加其他框架一样 我已经下载了 xcode 4 5 和 iOS 6 但我的应用程序仅在设备上因以下错误而崩溃 它在模拟器上运行良好 dyld Library not loaded
  • 如何使用 MEF 导出和导入函数并执行它们?

    我正在创建一个导入多个插件的应用程序 我需要能够执行每个插件中实现的功能 例如 我需要做这样的事情 MainApp ImportMany public IEnumerable
  • 如何设置JPanel的宽度和高度?

    我正在使用 Java 开发贪吃蛇游戏 棋盘 所有动作发生的地方 的宽度和高度应该是固定的 640 像素 480 像素 结构 主班延伸自JFrame class Board延伸自的类JPanel class In Main类我有类似的东西 s