首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java透明呈现错误

Java透明呈现错误
EN

Stack Overflow用户
提问于 2012-07-27 16:00:05
回答 3查看 3.5K关注 0票数 8

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

各个部分被创建为JPanels,paintComponent()方法被重写。他们画一个渐变头和半透明的背景。但是,当我更改其中一个面板的内容时,先前的内容将被抛在后面,而不是被删除。下面是一个例子:

如你所见,当时间从11:51改为11:52时,数字重叠,背景变浅(因为半透明的背景被重画在上面)。

图形误差

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

更新

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

更新2

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

EN

Stack Overflow用户

发布于 2012-07-27 17:27:55

类似的问题

地址为这里

还要注意,"Swing程序应该覆盖paintComponent()而不是覆盖paint().“-https://www.oracle.com/technetwork/java/index.html#callbacks

票数 4
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11691496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档