gpt4 book ai didi

java - 为什么我们的 Java 应用程序不在辅助监视器上显示窗口?

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:16 24 4
gpt4 key购买 nike

我们有一个已经存在多年的 Java/Swing 客户端。当我从 XP 移动到 Vista(客户端仅在 Windows 上运行)时,我注意到每当在我的辅助监视器上创建一个新窗口(通常是 JFrame 后代)时,该窗口最初显示为空白,即不显示正常内容 window ,它只是一 block 灰色的实心 block 。如果我随后将该窗口拖到主显示器上,它会在第二个穿过显示器边界时正确绘制自己,然后我可以将它拖回辅助显示器。如果窗口是在主显示器上创建的,它总是完美地存在。我从来没有在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com