【问题标题】:Problem with Painting in Java Swing App in Java 1.6Java 1.6 中的 Java Swing App 中的绘画问题
【发布时间】:2009-05-11 14:51:21
【问题描述】:

我正在开发一个 Swing 应用程序(目前在 Java 1.6 update 11 上运行),它有一些间歇性的油漆刷新问题(例如,有工件等)。这只会发生在我们应用程序的某些用户身上,而不会发生在其他用户身上。

经过一些研究,我发现将属性 sun.java2d.d3d 设置为 false 可能会有所帮助,事实上,它对我们的一位用户有所帮助。

现在其他一些用户正在抱怨这个问题,我正在考虑将所有用户的属性设置为false

我的基本问题如下:

这究竟是什么原因?是显卡吗?是司机吗?它是来自 Sun 的错误吗? (如http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6635462)三者结合?

换句话说,最好直接关闭此属性,还是只影响某些显卡,更新到最新驱动程序即可修复?

【问题讨论】:

  • 在 VMWare 中运行 Java 时经常出现此问题。

标签: java swing paint


【解决方案1】:

Java 在 R6 更新 10 中引入了基于 Direct3D 呈现图形的管道。根据发布说明here,它仅支持 NVidia 和 ATI 卡,这意味着不使用这些卡的任何人都可能遇到问题。由于这是最近的一项创新,我建议任何使用这些卡的旧驱动程序的人也可能会遇到问题。升级视频驱动程序可能会解决第一种情况,但不会解决最后一种情况。

如果将 sun.java2d.d3d 设置为 false,则可能发生的最坏情况是某些用户无法达到他们理论上可以达到的性能。您必须权衡这是否比您目前看到的问题更可取。

【讨论】:

  • 第一个遇到问题的用户有一个 ATI Radeon XPress 200,但我没有检查他们是否有最新的驱动程序。该应用程序是一个非常“标准”的 Swing 应用程序,即没有 3D 操作或“不寻常”的绘画操作。
  • 人们会认为它会自动关闭不受支持的视频卡,假设这是可能的。
【解决方案2】:

所有绘画和模型更改操作是否都在 EDT 上执行(例如更改 TableModel 等)?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2012-10-15
    • 2015-06-17
    • 2015-11-20
    • 2016-01-18
    • 1970-01-01
    相关资源
    最近更新 更多