gpt4 book ai didi

Java 透明渲染错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:43:47 24 4
gpt4 key购买 nike

我目前正在开发一个 kiosk 风格的 Java 程序来显示天气、时间、预报等。这是程序应该的样子的截图(时间更新前的截图)

Image showing required output before the graphical error

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

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

图形错误

Image showing the graphical error

我应该怎么做才能防止这种重叠?最终,我宁愿在单个面板更新其内容时不必重绘整个屏幕。我宁愿只重画那个特定的部分。重新绘制背景很容易,然后再绘制其中的所有组件。

更新

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

enter image description here

更新2

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

最佳答案

类似的问题

image before

地址为here

image after

另请注意,“Swing 程序应该覆盖 paintComponent() 而不是覆盖 paint()。”— Painting in AWT and Swing: The Paint Methods .

关于Java 透明渲染错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com