【问题标题】:Display issues on multiple screens after Windows 7 Update KB4034664 (August 2017)Windows 7 更新 KB4034664(2017 年 8 月)后多个屏幕上的显示问题
【发布时间】:2018-01-24 10:10:21
【问题描述】:

我们的应用程序的用户遇到了他们的 Swing GUI 无法正确绘制的问题。

所有有问题的用户之间的共同点是他们最近应用了 Windows 更新。用户报告说对话框在某些显示器上正确绘制,但在其他显示器上却不正确。

我们看到的种类问题的一个例子*:

用户还报告只显示一个框架的对话框,否则是透明的。如果 UI 线程被阻塞,您将看到的问题实际上是相同的。

可能是什么问题?


*我无法发布我们实际应用程序的屏幕截图,因为它包含敏感信息

【问题讨论】:

    标签: java swing windows-7 multiple-monitors


    【解决方案1】:

    更新:此问题已在更新KB4039884 中得到修复。


    这似乎是由最近的补丁引起的一个相当广泛的问题。它不仅限于 Java:

    看来,微软的更新 KB4034664(和 KB4034679) Windows 7 和 Windows Server 导致多个显示问题 第二个屏幕上的应用程序。

    Born CityComputer WorldMicrosoft themselves 报告:

    如果一台机器连接了多个显示器并且屏幕 编号不按顺序,部分应用会遇到 渲染问题。

    您应该能够通过回滚补丁来解决问题。这是一个安全更新(上面的链接详细说明了包含的内容),所以如果您特别厌恶风险,您可能不想这样做。

    Microsoft 将解决方法列为:

    1. 启用桌面合成(需要显卡支持)。
    2. 确保主显示器位于显示器布局的左上角。

    您也可以尝试切换到单个显示器设置,或对显示器配置进行其他更改(控制面板 > 显示 > 更改显示设置)。一些报告推测将哪个显示器设置为您的“主显示器”可能会有所不同。

    您可能还想尝试以下标志:-Dsun.noddraw=true

    【讨论】:

    • 我可以确认更改监视器布局解决了 Kronos Workforce Central 的问题。 (基于 Java 的网络应用程序)
    • According to neunbeere.de "实际问题似乎出在Windows API函数“StretchDIBits”中。在安全更新之后,当这个函数用于绘制图形的一部分时屏幕坐标为负的屏幕,失败"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2012-01-04
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多