我们有一个已经存在很多年的Java/Swing客户端。当我从XP迁移到Vista(客户端仅在Windows上运行)时,我注意到无论何时在辅助监视器上创建新窗口(通常是JFrame后代)时,该窗口最初显示为空白,即不显示标准的内容。在窗口中,它只是一块实心的灰色。然后,如果我将该窗口拖到主监视器上,则第二个窗口越过监视器边界,它会正确绘制自身,然后将其拖回到辅助监视器上。如果窗口是在主监视器上创建的,则它总是完美存在的。我从来没有在XP上有这个问题,只有在Vista上才有。缺少双显示器Windows 7计算机,我无法在Windows 7上轻松测试它。

有人有什么想法吗?这可能是一个已知的Java错误吗?我也在运行最新的Java 1.6 SDK。

最佳答案

检查视频驱动程序和 JRE 是否为最新。 (可能有一个当前的JDK,但是有一个旧的JRE。)

Java将把缓冲委托(delegate)给DirectDraw和/或Direct3D。您可以使用以下JVM选项禁用它:

  • -Dsun.java2d.d3d=false
  • -Dsun.java2d.noddraw=true

  • 还有其他选项here详细。

    如果主监视器位于辅助监视器的右侧,则辅助监视器上的屏幕位置将具有负X值。 (同样,如果次要位置高于主要位置,则Y值为负。)可能有一些代码未处理负值。

    关于java - 为什么您的Java应用程序不能在辅助监视器上显示窗口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3602590/

    10-13 04:26