如何使 JFrame 内的 JPanel 填充整个窗口?

2023-12-01

在下面的示例中,如何让 JPanel 占用所有 JFrame?我将首选尺寸设置为 800x420,但实际上只填充了 792x391。

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class BSTest extends JFrame {
    BufferStrategy bs;
    DrawPanel panel = new DrawPanel();

    public BSTest() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());   // edited line
        setVisible(true);
        setSize(800,420);
        setLocationRelativeTo(null);
        setIgnoreRepaint(true);
        createBufferStrategy(2);
        bs = getBufferStrategy();
        panel.setIgnoreRepaint(true);
        panel.setPreferredSize(new Dimension(800,420));
        add(panel, BorderLayout.CENTER);     // edited line
        panel.drawStuff();
    }

    public class DrawPanel extends JPanel {
        public void drawStuff() {
            while(true) {
                try {
                    Graphics2D g = (Graphics2D)bs.getDrawGraphics();
                    g.setColor(Color.BLACK);
                    System.out.println("W:"+getSize().width+", H:"+getSize().height);
                    g.fillRect(0,0,getSize().width,getSize().height);
                    bs.show();
                    g.dispose();
                    Thread.sleep(20);
                } catch (Exception e) { System.exit(0); }
            }
        }
     }

    public static void main(String[] args) {
        BSTest bst = new BSTest();
    }
}

如果框架中只有一个面板而没有其他面板,请尝试以下操作:

  • 在frame中设置BorderLayout。
  • 使用 BorderLayout.CENTER 在框架中添加面板

可能是因为 JPanel 中的 while 循环而发生这种情况。(不确定为什么?找到实际原因。找到后会更新。)如果将其替换为paintComponent(g)方法一切正常:

public BSTest() {
    //--- your code as it is
    add(panel, BorderLayout.CENTER);
    //-- removed panel.drawStuff();
}

public class DrawPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.BLACK);
        System.out.println("W:" + getSize().width + ", H:" + getSize().height);
        g2d.fillRect(0, 0, getSize().width, getSize().height);
    }
 }

//your code as it is.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 JFrame 内的 JPanel 填充整个窗口? 的相关文章

  • 多线程环境下如何更好的使用ExecutorService?

    我需要创建一个库 其中包含同步和异步方法 executeSynchronous 等待直到有结果 返回结果 executeAsynchronous 立即返回一个 Future 如果需要 可以在其他事情完成后进行处理 我的图书馆的核心逻辑 客户
  • 使用 AbstractTableModel 获取 JTable 中选定的行

    我有一个JTable using AbstractTableModel我在哪里有一个JCheckBox在第一列中用于选择行 现在 我需要从已检查的表中获取选定的行 现在 我按顺序从第一行遍历到最后一行并获取所有选择的行 如下所示 List
  • 在Java中清空数组/处理

    除了循环遍历数组中的每个元素并将每个元素设置为 null 之外 Java 处理中是否有一个本机函数可以简单地清空数组 或销毁它 以便能够将其重新声明为新数组 There s Arrays fill myArray null 并不是说它执行的
  • 将 spring-security 与 spring-webflux 结合使用时禁用 WebSession 创建

    我正在使用 Rest api 运行无状态 spring boot 应用程序 并希望按照所述禁用 WebSessions 的创建https www baeldung com spring security session https www
  • 线程“main”java.lang.UnsatisfiedLinkError中出现异常:java.library.path中没有opencv_java249

    我目前正在尝试在我的 32 位笔记本电脑上设置 OpenCV 但我不断收到一条令我困惑的错误消息 Exception in thread main java lang UnsatisfiedLinkError no opencv java2
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • 使用 Spring Data REST 处理自定义异常 (i18n)

    我正在使用 Spring Boot 1 5 4 和 Spring JPA Spring Data REST HATEOAS 我正在寻找一种最佳实践 Spring 方式 来自定义异常 Spring Data REST 正在管理添加 i18n
  • firebase推送通知错误Spring Boot服务器端

    我正在尝试从 Spring Boot 服务器端发送通知到客户端 android 服务器运行良好 一切都很好 2020 09 01 08 13 07 691 INFO 18941 restartedMain e DevToolsPropert
  • 哈希码是否用于加速集合中的对象查找?

    IIUC 相同类型的两个不同对象可以存储在 HashSet 中 即使两个对象在以下情况下返回相同的值 hashCode 叫做 例如根据本文 https eclipsesource com blogs 2012 09 04 the 3 thi
  • 用 java 编写解释器时的 switch 或 if 语句

    当前的作业需要我编写一个程序 以一种非常微小且基本的编程语言 行为有点像 FORTRAN 来读取包含指令的文件并执行这些指令 基本上它是我猜的语言的简单解释器 它是完全线性的 所有语句都是按顺序定义的 并且只有字符串和整数变量 我需要查找和
  • BlackBerry SQLite:将一个 SQLite 数据库连接到另一个

    我正在尝试使用 SQLite 将一个 SQLite 数据库附加到 BlackBerry 上的另一个数据库附加数据库 http www sqlite org lang attach html命令 Database d1 d2 Statemen
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • 如何制作无限的jscrollpane?

    我之前已经实现过拖动滚动 但是创建无限滚动窗格的最佳方法是什么 当然不会有任何滚动条 我将实现拖动滚动 我想做的是在无限表面上实现动态加载 EDIT 当然 它实际上不会是无限的 我想问如何伪造它 您可以执行以下操作 AdjustmentCl
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 我们可以有虚假中断吗?

    我正在创建一个任务轮询器 每分钟都会查找任务 它看起来像这样 public class Poller private final ExecutorService e Executors newSingleThreadExecutor pub
  • 从命令行运行 Maven 插件的语法是什么。

    我看到这里已经有人问过这个问题 如何从命令行执行maven插件 https stackoverflow com questions 12930656 how to execute maven plugin from command line
  • H2 - (相当)长的 INSERT 失败,错误 42000

    H2 内存中 插入 错误 42000 尝试过版本 1 4 196 1 4 197 1 4 199 我还尝试在 H2 服务器 本地 上执行 INSERT 也失败 给出错误的行 抱歉 但出于安全原因 我无法生成更多 INSERT INTO tb
  • 将带有 webapp 的 WAR 部署到 Maven 中央存储库是否有意义?

    这样做有意义吗 如果是 我在哪里可以找到使用简单的 Web Hello World 执行此操作的示例 当人们从 Maven 执行 Web 应用程序时 他们会使用 Jetty 来运行它吗 我想 tomcat 太重了 任何帮助将不胜感激 谢谢
  • 使用 Runtime.getRuntime().exec() 进行重定向不起作用

    我需要从程序执行命令 命令行是可以的 我在终端试了一下 但是在程序中不行 我从我的代码中添加一个副本 File dir new File videos String children dir list if children null Ei
  • 我找不到 IntelliJ 快捷方式

    我使用 vim 一段时间 我知道有一个 intellij vim 插件 我很好奇内置的 IntelliJ 文本导航存在什么 如何打开实时模板来创建模板 如何查看以 tr 开头的现有模板列表 如何进行全局搜索并在当前文档中进行搜索 然后转到下

随机推荐

  • C++ - 从注册表读取的值中获取空值

    我的应用程序可以正确读取和写入注册表 现在 我需要从以下位置读取注册表值 HKEY LOCAL MACHINE SOFTWARE Microsoft Cryptography MachineGuid 这是我的代码 bool GetWindo
  • 异常后继续 while 循环

    我有这段代码 我想返回到循环的开头并再次请求用户输入 然而 它总是循环不停地询问输入 我的代码有什么问题吗 谢谢 while true try int choice input nextInt lt lt this should stop
  • 为什么 NSUserDefaults 无法保存 NSMutableDictionary?

    我正在尝试保存一个NSMutableDictionary with NSUserDefaults 我在 stackoverflow 上阅读了很多关于该主题的帖子 我还发现了一个有效的选项 但不幸的是它只工作了一次 然后它开始只保存 空 有人
  • 动态调整 QIcon 大小,无需调用 setSizeIcon()

    我目前正在努力解决一个应该很容易解决的问题 许多小部件都支持某种QSize策略 这包括Q按钮 就我而言 我在网格布局中有多个按钮 所有这些按钮都有各自的 QSizePolicy垂直和水平调整大小设置为扩大 这导致按钮的大小根据网格布局所属的
  • VS2015 SP3远程调试路径中的非法字符

    将 Visual Studio 2015 升级到 Update 3 后 远程调试停止工作 尝试调试时出现错误 严重性代码 说明 项目文件行抑制状态 错误 DEP4300 无法生成应用程序包 xxx VS Debug x86 xxx CN x
  • FragmentActivity 上未调用 onCreateOptionsMenu()

    同事 MainActivity类源自FragmentActivity 并且由于某种原因活动的onCreateOptionsMenu 没有接到电话 我有第一个断点onCreate 正在被触发 第二个在onCreateOptionsMenu 这
  • 由于与 google gms 服务版本冲突,FCMPlugin 构建失败

    我在 Windows for Android 上将其与 ionic 2 一起使用 当我添加 cordova plugin fcm 插件时 我无法再构建项目 这是我收到的错误 BUILD FAILED Total time 4 697 sec
  • Codeigniter图片上传mysql

    我想知道如果我将 CodeIgniter 中的图像上传到数据库 我的结果是什么 config upload path 我见过的所有示例都使用文件系统 我在数据库中有文章 并且也想在数据库中存储与文章相关的图像 有人可以帮忙吗 你可以阅读这篇
  • PHP 和 mssql 库可以从 varchar 列中选择超过 256 个字符吗?

    是否有解决方法 除了将列类型更改为文本字段之外 使用 PHP 和 mssql 库选择大型 varchar 字段 例如 varchar 500 PHP 真的将字符数限制为 255 吗 还有比这更拉回来的方法吗 从PHP页面来看 问题似乎出在W
  • 有没有什么方法可以只使用 CSS 来获得倾斜的盒子阴影?

    我想要类似徽标的东西CSS 技巧 但使用 CSS 而不是图像文件 因此可以调整其大小 这可能吗 像这样的图片 纯 CSS 带切角的倾斜阴影 这花了一点时间来完善 但现在横幅下有一个倾斜的阴影 也有切角和多个边框 所有效果 包括背景 徽标和阴
  • 使用自定义选择器和逻辑进行 JQuery 验证

    是否可以将 JQuery Validate 与自定义选择器和验证逻辑一起使用 大致如下 myForm validate rules myattr foo function content return content val contain
  • CLR 在运行时使用的 dll

    我有一个引用 NET DLL 的 C 应用程序 如果这个 DLL 存在于我的应用程序中bin目录和 GAC 然后 CLR 在运行时会选择哪一个 如果 GAC 有最新版本 是否会使用该版本而不是bin 我如何强制 CLR 始终使用我的 CLR
  • 无法阻止被动事件侦听器内的默认行为

    我在用着Framework7 可排序列表它运行良好 只是当列表更改时它不会触发事件 所以我正在尝试一些内置事件 sortable handler on touchstart function e e preventDefault alert
  • FlashDevelop、Haxe 导入 CreateJS?

    我刚刚开始尝试 Haxe 制作一个网络应用程序 我想使用 CreateJS 它有一个 Haxe extern lib 东西 我使用 FlashDevelop 作为我的 IDE 所以我在FlashDevelop中创建了一个新的Haxe JS项
  • 从 jquery ui datepicker maxDate 选项获取日期对象

    通过使用以下 var maxDate selector datepicker option maxDate 输出可以是 1M 20Y 12 12 2013 或更多的任何内容 1M 和 20Y 示例是否可以与本机 JavaScript 一起使
  • Actionscript 3:self 事件侦听器是否会阻止对象被垃圾回收?

    我知道事件侦听器和对对象的引用将阻止垃圾收集器处理对象 我的问题是 放置在对象上的事件侦听器侦听同一对象是否会阻止该对象被垃圾收集 我问是因为这似乎发生在我身上 我正在破坏对某个对象的所有引用 但当其计时器关闭时我仍然看到痕迹 同时 这似乎
  • 如何使用 Angular CLI 安装特定版本的 Angular?

    我搜索了 google 和 Angular cli 文档 但找不到任何使用 Angular CLI 安装特定版本 Angular 的方法 有可能吗 为了回答您的问题 我们假设您对特定的感兴趣angular版本而不是特定的角度 cli版本 A
  • 如何解决MongoDB实例化失败的问题[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我关注了 MongoDbDocs设置我的第一个 MongoDb 当我使用命令启动 MongoDB 时 C Program Files MongoDB Server 3 4 bin mong
  • jpeg 的有效 base64 字符串

    这是有效的 jpeg base64 字符串吗 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAAD 2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgk
  • 如何使 JFrame 内的 JPanel 填充整个窗口?

    在下面的示例中 如何让 JPanel 占用所有 JFrame 我将首选尺寸设置为 800x420 但实际上只填充了 792x391 import java awt Color import java awt Dimension import