Java 透明度渲染错误

2024-01-12

我目前正在开发一个信息亭风格的 Java 程序来显示天气、时间、天气预报等。这是该程序的截图should看起来像(时间更新之前的截图)

各个部分均创建为 JPanel,其中包含paintComponent()方法被重写。他们绘制渐变标题和半透明背景。但是,当我更改其中一个面板的内容时,以前的内容会被保留,而不是被删除。一个例子如下所示:

可以看到,当时间从 11:51 变为 11:52 时,数字重叠,背景变亮(因为在其上重新绘制了半透明背景)

图形错误

我应该做什么来防止这种重叠?最终,我希望当单个面板更新其内容时不必重新绘制整个屏幕。我宁愿只重画该特定部分。重新绘制背景以及其中的所有组件将很容易。

Update

几个答案涉及清理要绘制的区域。无论我使用g.clear() or AlphaComposite.CLEAR它会删除背景图像。这可以在下图中看到。也许如果我可以在清除该区域之前复制背景,我可以重新绘制背景的该部分,然后适当地对其他图像进行分层。想法?

Update 2

提交的答案显示了放置在透明面板和背景上的计时器的完整工作示例。这非常有用,但是,我不会手动绘制我的子组件。时间、天气图标和温度都是 JLabels 布局在半透明面板上。我不想手动绘制各个组件。


类似的问题

已解决here https://stackoverflow.com/questions/2163544/re-paint-on-translucent-frame-panel-component/2166500#2166500

另请注意,“Swing 程序应该覆盖paintComponent()而不是覆盖paint()."—在 AWT 和 Swing 中绘制:绘制方法 https://www.oracle.com/technetwork/java/index.html#callbacks.

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

Java 透明度渲染错误 的相关文章

随机推荐

  • 如何从 kerberos 票证中检索组成员身份?

    我正在尝试从 windows2008r2 上生成的 Kerberos 票证中提取组成员身份信息 在一个URL中 我发现了以下语句 Kerberos 还在研究在 Kerberos 授权数据中包含组成员身份信息的机制 尽管将组名称包含到 ACL
  • SQLite 的磁盘 I/O 错误

    我有一个 很小的 动态网站 它 大致 是一个使用 SQLite 数据库的 Perl CGI 脚本 DBI 包是 Perl 中使用的抽象层 大约一周前 我开始看到此错误消息 disk I O error 10 at dbdimp c line
  • Scala 随机字符串

    希望你做得好 我刚刚开始 scala 基本编程 我想用 foreach 或其他你认为最好的方法生成一些字符串变量 我该如何使用scala util Random生成此结果 Var 1A String random between A to
  • Powershell 哈希表到 HTML

    我正在尝试编写一个非常简单的 Powershell 脚本 用于检查某个位置中的文件 然后确定是否有超过 90 天的文件 很简单 但如果我可以使用 PS 的 send mailmessage cmdlet 来使用我创建的哈希表并接受格式化为
  • 从顶部删除项目时如何保留 AngularJS 中 ng-repeat 的滚动位置

    我尝试从解决方案开始工作 如何在 AngularJS 中保留 ng repeat 的滚动位置 https stackoverflow com questions 23736647 how to retain scroll position
  • SVN签出忽略文件夹

    我可以忽略 svn checkout 上的文件夹吗 我需要在构建服务器上结帐时忽略 DOCs 文件夹 edit 忽略外部因素不是一个选项 我有一些我需要的外部设备 您不能在签出时直接忽略文件夹 但可以在 svn 1 5 中使用稀疏签出 例如
  • 当我们在输入 html 标签中使用 name="Keys" 时?

    当我们在输入 html 标签中使用 name Keys 时 我知道 name 属性 但是当我们使用时keys name 属性指定输入元素的名称 name 属性用于在提交到服务器后识别表单数据 或者在客户端使用 JavaScript 引用表单
  • 如何检查PHP中的特殊字符[重复]

    这个问题在这里已经有答案了 可能的重复 preg match php特殊字符 https stackoverflow com questions 3937569 preg match php special characters 大家好 我
  • Pyinstaller 加载启动画面

    Pyinstaller 最近添加了一个启动画面选项 耶 但启动画面在 exe 运行的整个过程中保持打开状态 我需要它 因为我的文件打开速度非常慢 我想警告用户不要关闭窗口 有没有办法让 gui 打开时关闭启动屏幕 来自 pyinstalle
  • 如何使用 Retrofit 从 Android 发送 FCM 通知?

    我要寄fcm notification从 Android 设备到另一台设备 使用retrofit 我尝试这个但是 public interface ApiInterface Headers Authorization key AAAA4Ub
  • 如何根据扩展值搜索资源?

    我有一组以下形式的 fhir 资源
  • DOS下用什么来制作图形?

    哪些库用于在 DOS 控制台 上制作 2D 3D 图形和图形用户界面 我指的是 德军总部 3D 暗影武士 等游戏中使用的糟糕图形 硬件加速的想法直到 Windows 时代才真正流行起来 因此 大多数显卡运行的模式都是将大型内存阵列映射到特定
  • Flask - AttributeError:“模块”对象没有属性“项目”

    我正在使用 Flask restful 并具有以下 API 类 views py from datetime import date from flask import jsonify from flask ext restful impo
  • JqG​​rid多选列表在IE7/8编辑模式下总是选择第一个选项

    进入编辑模式时 网格 v4 3 1 在下拉列表中选择正确的值 然而 IE 7和IE 8似乎有一个问题 它会自动选择第一项 随着也应该选择其他值 有人在 IE7 8 中偶然发现过这个吗 在研究 jqgrid 的源代码时 我还看到了一条实际上可
  • 将 PHP 变量传递到 Javascript window.location

    我试图将 php 变量传递到 java 脚本 window location 中 该脚本在从数据库中删除项目后将用户返回到当前列表视图 我似乎无法得到正确的语法 Code function confirmation a var currSt
  • root.overrideredirect 和 绑定

    我希望以下程序退出
  • 数据表选择

    如何使用 DataTable 的 Select 方法来获取以 M 开头的用户名 假设 UserNameTextBox 有一个字符串M oDataTable Select UserName UserNameTextBox Text DataV
  • 覆盖 wp-login.php 样式

    我有一个 Wordpress CMS 网站 其中大多数标签都需要是白色的 因此 主题包括每个表单标签的以下样式 login label color fff font size 14px 上面的样式是从 wp login php 文件中填充的
  • Delphi 2009 中的 dfm 中添加的 DoubleBuffered 属性在 Delphi 2007 中不存在

    这是否意味着我无法在 delphi 2007 和 2009 之间共享表单 DoubleBuffered 在 TWinControl 中已经有一段时间了 Delphi 2009 的不同之处在于它是现在发布的 如果您只能忽略错误 而不是使属性起
  • Java 透明度渲染错误

    我目前正在开发一个信息亭风格的 Java 程序来显示天气 时间 天气预报等 这是该程序的截图should看起来像 时间更新之前的截图 各个部分均创建为 JPanel 其中包含paintComponent 方法被重写 他们绘制渐变标题和半透明