Java Swing双缓冲区问题

时间:2012-02-10 22:32:51

标签: java swing double buffer

当覆盖Swing组件的paintComponent方法并且让图形对象不在组件的整个表面上绘制时(例如,只有g2.rotate(0.3)将显示绘制和未绘制的部分) ,组件的未涂漆部分正从后缓冲区图像填充垃圾颜色。

如果我从RepaintManager禁用双缓冲,则不会出现垃圾,并且未绘制的部分显示为透明,但由于所有重新绘制和无缓冲,所有内容看起来都像废话。

即使我使用paintComponent中的g2对象将alpha设置为50%,我仍然可以通过透明度看到缓冲的垃圾。

我已尝试在单个组件上禁用双缓冲,但也没有骰子。

此问题记录在其他地方,例如:http://www.java.net/node/689238

...但似乎没有办法纠正这种缓冲区损坏......任何人都有任何想法?

此外,在Windows系统上,将主题更改为“经典”将解决此问题...可能是操作系统问题?

谢谢!

2 个答案:

答案 0 :(得分:1)

你做过setOpaque(false)吗?

答案 1 :(得分:0)

这似乎与Windows Aero主题相关,以及Windows如何处理自己的透明胶片。经典或基本主题(或非Windows操作系统)纠正了这一点。谢谢你的帮助。

-Paul