我正在编写一个游戏,使用Java2D,目前还没有遇到任何问题,直到我开始将其与其他swing组件集成时。我的问题是,当我添加到JFrame的第一个组件不是我绘图的画布时,当我在文本框的滚动条上悬停鼠标时会出现奇怪的伪像。每次执行应用程序时都会发生这种情况。当我将画布放在第一位时,就没有问题了。
由于某种原因,这似乎只发生在Windows上,当使用默认的Java2D管道(即sun.java2d.d3d=true)时,伪像才会出现。当我设置sun.java2d.opengl=true或sun.java2d.noddraw=false AND sun.java2d.d3d=false时,就不会发生了。
我猜这是Direct3D Java2D管道的某种bug?我可以很容易地解决它,但很想知道是否有其他人遇到过这样的问题?我正在运行最新的JDK7u7,但以前的版本也会出现这个问题。值得注意的是,如果我最小化窗口并将其恢复,伪像就会消失,并且永远不会返回,直到我重新启动应用程序。
带有伪像: 没有伪像(在添加画布而不是JLabel图像之后): 如果有人对此有更多信息,我会非常感激。谢谢!
由于某种原因,这似乎只发生在Windows上,当使用默认的Java2D管道(即sun.java2d.d3d=true)时,伪像才会出现。当我设置sun.java2d.opengl=true或sun.java2d.noddraw=false AND sun.java2d.d3d=false时,就不会发生了。
我猜这是Direct3D Java2D管道的某种bug?我可以很容易地解决它,但很想知道是否有其他人遇到过这样的问题?我正在运行最新的JDK7u7,但以前的版本也会出现这个问题。值得注意的是,如果我最小化窗口并将其恢复,伪像就会消失,并且永远不会返回,直到我重新启动应用程序。
带有伪像: 没有伪像(在添加画布而不是JLabel图像之后): 如果有人对此有更多信息,我会非常感激。谢谢!
JComponent
不难想到,但JPanel
或许更好。它们都可以提供默认的双缓冲功能。 - MadProgrammer