具有多层的 JFrame

2023-12-21

我有一个有两层的窗口:静态背景和包含移动对象的前景。我的想法是只绘制一次背景(因为它不会改变),所以我使更改面板透明并将其添加到静态背景之上。这是代码:

public static void main(String[] args) {
    JPanel changingPanel = new JPanel() {

        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.RED);
            g.fillRect(100, 100, 100, 100);
        }
    };
    changingPanel.setOpaque(false);

    JPanel staticPanel = new JPanel();
    staticPanel.setBackground(Color.BLUE);
    staticPanel.setLayout(new BorderLayout());
    staticPanel.add(changingPanel);

    JFrame frame = new JFrame();
    frame.add(staticPanel);
    frame.setSize(800, 600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}

这段代码给了我我想要的正确图像,但每次我重新绘制changingPanel, staticPanel也会被重新绘制(这显然违背了只绘制一次静态面板的整个想法)。有人可以告诉我出了什么问题吗?

仅供参考,我正在使用 javax.swing.Timer 每秒重新计算并重新绘制不断变化的面板 24 次。


当您在另一个透明组件之上重新绘制透明组件时,您仍然会“弄脏”下部组件,从而导致它被重新绘制。如果您没有重新绘制下层,则会在其顶部得到图像的涂抹效果。

这里唯一可用的优化是不重新生成较低级别上使用的图像。每次上面的图层发生变化时,仍然需要将光栅绘制到图形缓冲区。

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

具有多层的 JFrame 的相关文章

  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • 为什么反射会减慢Android手机的速度

    我多次读到反射会降低手机性能 这有多真实 例如 在我的例子中 我从 Web 服务获取一些参数 这些参数与我在 Android 应用程序中的类的参数同名 所以我只是使用java字段和反射设置这些参数的值 它似乎并没有降低性能 有人可以向我解释
  • 如何使用 JAVA 代码以编程方式捕获线程转储?

    我想通过 java 代码生成线程转储 我尝试使用 ThreadMXBean 为此 但我没有以正确的格式获得线程转储 因为我们正在使用jstack命令 请任何人提供一些帮助 他们是否有其他方式获取线程转储 使用任何其他 API 我想要的线程转
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • Logback:SizeAndTimeBasedRollingPolicy 不遵守totalSizeCap

    我正在尝试以一种方式管理我的日志记录 一旦达到总累积大小限制或达到最大历史记录限制 我最旧的存档日志文件就会被删除 当使用SizeAndTimeBasedRollingPolicy在 Logback 1 1 7 中 滚动文件追加器将继续创建
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • 您建议使用哪种压缩(GZIP 是最流行的)servlet 过滤器?

    我正在寻找一个用于大容量网络应用程序的 GZIP servlet 过滤器 我不想使用容器特定的选项 要求 能够压缩响应负载 XML Faster 已在大批量应用的生产中得到验证 应适当设置适当内容编码 跨容器移植 可选择解压缩请求 谢谢 我
  • tomcat 7.0.50 java websocket 实现给出 404 错误

    我正在尝试使用 Java Websocket API 1 0 JSR 356 中指定的带注释端点在 tomcat 7 0 50 上实现 websocket 以下是我如何对其进行编码的简要步骤 1 使用 ServerEndpoint注解编写w
  • FileNotFoundException - Struts2 文件上传

    Strange FileNotFoundException使用Struts2上传文件时 这是 JSP 的一部分
  • Spring数据中的本机查询连接

    我有课 Entity public class User Id Long id String name ManyToMany List
  • Java:从集合中获取第一项

    如果我有一个集合 例如Collection
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • 添加到列表时有没有办法避免循环?

    我想知道这样的代码 List
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • 禁用 Android 菜单组

    我尝试使用以下代码禁用菜单组 但它不起作用 菜单项仍然启用 你能告诉我出了什么问题吗 资源 菜单 menu xml menu menu
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • try-with-resources 中出现死代码警告,但翻译后的 try-catch-finally 中没有出现死代码警告

    以下代码使用try 有资源 https docs oracle com javase specs jls se7 html jls 14 html jls 14 20 3Java 8 中引入的构造 偶尔抛出 方法被声明为抛出一个偶尔的异常
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu

随机推荐

  • OS X:检测系统范围的 keyDown 事件?

    我正在为 Mac OS X 开发一个打字辅导应用程序 即使该应用程序未处于焦点状态 也需要将击键转发给它 有没有办法让系统将击键转发到应用程序 可能通过 NSDistributedNotificationCenter 我用谷歌搜索了自己愚蠢
  • 将 JSON 导入 Eclipse 项目

    我是一名有抱负的 Java 程序员 希望在项目中使用 JSON 我正在遵循一个编程教程 来自一本书 它要求我使用以下行将 JSON 导入到我的项目中 import com google appengine repackaged org js
  • 苹果推送消息

    我正在将推送提供商服务器与谷歌代码中的代码 php apns 集成 除了每条消息的字节数之外 一切似乎都很好 每个有效负载的字节数最多应为 256 个字符 如果发送一些汉字或者UTF 8字符 JSON编码后 每个字符占用6个字节 我对吗 所
  • 在网站上使用内联/base64 图像比仅链接到硬文件要快多少?

    使用 base64 line 来显示图像比简单地链接到服务器上的硬文件快多少 url data image png base64 我还没有找到任何类型的性能指标 我有几个顾虑 您不再获得缓存的好处 Base64 的大小不是比 PNG JPE
  • 在 Sass 中使用 CSS 属性变量

    我正在编写一个 mixin 其中包含一些数学计算元素的百分比宽度 但由于它非常有用 我也想对其他属性使用相同的函数 例如边距和填充 有没有办法将属性名称作为参数传递给 mixin mixin w fluid property name w
  • “EntityManager 没有持久性提供程序”错误

    我是 JPA 的新手 我尝试从书中做一个简单的例子 但无论我做什么 我都会收到以下错误 Exception in thread main javax persistence PersistenceException No Persisten
  • Java的排序算法是什么[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 OpenJDK 内部如何对数据类型进行排序以及为什么 如果能说一下具体的算法就太好了 从版本 7 开始 Oracle 的 Java 实
  • 如何更改conda base的路径

    I am a Linux集群用户 当我安装了一个版本miniconda 集群有自己的版本anaconda 当我做 conda info envs 输出是 conda environments home user miniconda3 env
  • 如何使用类型级函数动态创建静态类型?

    在 TypeScript 中 有类型级 功能允许根据给定创建新类型literal 类型 规格 see 映射类型 https www staging typescript org docs handbook advanced types ht
  • 如何计算 std::weak_ptr 的哈希值?

    所以我有使用的代码std weak ptr并将它们维护在std set 而且效果很好 并且在过去的五七年里一直有效 最近我想我应该在一个std unordered set 嗯 实际上在一个f14 F14ValueSet 为此 我需要它的哈希
  • 打破批处理文件中的嵌套 for 循环

    两次遇到这个问题后 我想我会将其发布在这里 看看是否有人知道如何解决它 我似乎无法使用打破嵌套循环goto 因为看起来当它跳出内部循环时 括号就会不匹配 因为它从未到达内部结束循环 我已将其范围缩小为一个非常简单的示例 for a in 1
  • 将日期时间转换为时间戳 PHP

    我的 GPS 设备正在与我的 php Web 服务通信 它发送 date 311011 和 time 060904 格式 time str split time 2 date str split date 2 time implode ti
  • 在 iOS 7 中呈现 UIImagePickerController 的问题

    我的应用程序仅在横向模式下运行 所以我知道UIImagePickerController仅以纵向模式呈现 因此在 iOS 6 中 我创建了一个子类UIImagePickerController这迫使UIImagePickerControll
  • Windows 重新启动后,Postgresql 一次特定查询失败

    我在 Windows 上的 C 应用程序中使用 Postgresql 我遇到的问题非常奇怪 可以描述如下 我重新启动 Windows 我运行程序 一个特定查询失败 SELECT COUNT AS c FROM files WHERE tot
  • Android Studio - build.gradle 中出现未捕获的翻译错误 ExecutionException OutOfMemory

    我在 Android Studio 中使用 Android 应用程序时遇到了一个奇怪的问题 一切似乎都工作正常 直到今天添加了一些之后新文件并进行一些更新构建 gradle 我看到的错误消息如下 Uncaught translation e
  • SMT 中的混合理论

    我想构造一个 SMT 公式 其中包含对整数线性算术和布尔变量的多个断言 以及对实际非线性算术和布尔变量的一些断言 对整数和实数的断言仅共享布尔变量 例如 请考虑以下公式 declare fun b Bool assert b true de
  • Android从url解析json并存储它

    你好 我正在创建我的第一个 Android 应用程序 我想知道从 URL 解析 JSON Feed 的最佳和最有效的方法是什么 而且理想情况下我想将它存储在某个地方 这样我就可以继续返回它在应用程序的不同部分 我到处寻找 发现了很多不同的方
  • 如何在android中设置MediaController背景的透明度

    我想设置 MediaController 背景而不是控件的透明度 我尝试使用 mediaController setAlpha 0 6f 但它也对控件应用透明度this https i stack imgur com lOtO5 jpg 找
  • 删除字符串之间不需要的空格[重复]

    这个问题在这里已经有答案了 我想知道如何删除字符串之间不需要的空格 例如 gt gt gt a Hello world 我想打印它 删除多余的中间空格 你好世界 这会起作用 join a split 没有任何争论 a split 将自动按空
  • 具有多层的 JFrame

    我有一个有两层的窗口 静态背景和包含移动对象的前景 我的想法是只绘制一次背景 因为它不会改变 所以我使更改面板透明并将其添加到静态背景之上 这是代码 public static void main String args JPanel ch