当重写 Swing 组件的 PaintComponent 方法并且让图形对象不在组件的整个表面上绘制时(例如,仅使用 g2.rotate(0.3) 将显示已绘制和未绘制的部分) ,组件的未绘制部分将使用后台缓冲区图像中的垃圾颜色进行填充。
如果我从 RepaintManager 禁用双缓冲,则不会出现垃圾,并且未绘制的部分显示为透明,但由于所有重新绘制且没有缓冲,一切看起来都像垃圾。
即使我使用paintComponent中的g2对象将alpha设置为50%,我仍然可以通过透明度看到缓冲的垃圾。
我尝试在单个组件上禁用双缓冲,但也没有骰子。
此问题已在其他地方记录,例如:http://www.java.net/node/689238
...但似乎没有办法纠正这种缓冲区损坏...有人有什么想法吗?
此外,在 Windows 系统上,将主题更改为“Classic”将解决此问题...也许这是操作系统问题?
谢谢!
最佳答案
你做了setOpaque(false)
吗?
关于Java Swing 双缓冲区问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235742/