我们有一个 Java/Swing 客户端,它已经存在了好几年了。当我从 XP 迁移到 Vista(客户端仅在 Windows 上运行)时,我注意到每当在辅助监视器上创建新窗口(通常是 JFrame 后代)时,该窗口最初显示为空白,即不显示正常内容窗户,它只是一块灰色的实心块。如果我然后将该窗口拖到主显示器上,那么它在越过显示器边界的那一刻,就会正确地自行绘制,我可以将其拖回辅助显示器。如果窗口是在主监视器上创建的,那么它总是完美存在。我在 XP 上从来没有遇到过这个问题,只在 Vista 上遇到过这个问题。由于缺乏双显示器 Windows 7 机器,我无法在 Windows 7 上轻松测试它。
任何人都有any想法?这可能是一个已知的 Java 错误吗?我还运行最新的 Java 1.6 SDK。
检查视频驱动程序和JRE是最新的。 (可以使用当前的 JDK,但使用旧的 JRE。)
Java 会将缓冲委托给 DirectDraw 和/或 Direct3D。您可以使用以下 JVM 选项禁用此功能:
-Dsun.java2d.d3d=false
-Dsun.java2d.noddraw=true
还有其他详细选项here http://download.oracle.com/javase/6/docs/technotes/guides/2d/flags.html.
如果主显示器位于辅助显示器的右侧,则辅助显示器上的屏幕位置将具有负 X 值。 (同样,如果次要位置高于主要位置,则 Y 值将为负。)可能存在不处理负值的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)