【问题标题】:Weird swing heavyweight & lightweight mixing problem奇怪的挥杆重量级和轻量级混合问题
【发布时间】:2010-03-17 14:38:39
【问题描述】:

由于我们已将 java 版本从 6u5 升级到 6u18(该应用程序在 WinXP 上运行),因此我们在基于 swing 的应用程序中遇到了问题。

我们的应用程序包含一个位于 JFrame 中的 Canvas 对象。应用程序在画布上绘制东西。

每次我们在画布上拖动一个轻量级的摆动对象(弹出窗口或其他框架)时,都会出现刷新问题。 它闪烁 - 变黑。只有在我们将 swing 组件从画布上移开并再次单击它后,问题才会解决。

我们认为这个问题与画布是重量级对象有关。 我们知道在新版本的 java 中对重量级和轻量级对象的混合问题进行了更改。

更多细节: 1) 我们的问题在 java 6u14 和 6u16 中重现。 2) 在 java 6u5 中一切正常。

另一个奇怪的事情: 我们有两种类型的站点运行我们的应用程序。 第一种类型有 ATI FireGL7100 PCI-E 显卡。第二种类型有 Matrox G450 PCI 图形卡。 该问题不会在基于 Matrox 的工作站上重现在任何 java 版本中。

还有一点: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6829858 - 看起来与我们的问题相似。

我们的问题熟悉吗? 你有什么建议吗(解决方法,想法显卡的差异如何与这个问题联系起来)

希望我足够清楚, 约夫

【问题讨论】:

    标签: java swing


    【解决方案1】:

    文章Mixing heavy and light components 描述了在 JDK 6 更新 12 中对此的支持如何改变。这两个视频卡可能会以不同的方式处理 Z 顺序。您的代码是否有可能不再需要解决方法?

    【讨论】:

      【解决方案2】:

      我们在 6u14+ 中遇到了 HW/LW 混合问题(破坏一切的修复在 14 中)。我们的问题出在第三方库 (JIDE) 中,他们最终解决了这个问题。

      我的建议是尽可能避免使用硬件。如果正确完成,您可以从 LW 中获得非常不错的性能。你在画什么需要硬件?

      【讨论】:

        【解决方案3】:

        我不知道这是否与其他任何人有关,但我们找到了解决我们问题的解决方法/修复方法。

        我们已将系统属性 sun.awt.noerasebackground 和 sun.java2d.noddraw 都设置为 true。这消除了我们的问题。

        唯一的问题是我不确定设置这些系统属性可能会引发什么其他问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-06
          • 2021-04-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-25
          相关资源
          最近更新 更多