Проблема с рисованием в Java Swing App в Java 1.6 - PullRequest
5 голосов
/ 11 мая 2009

Я работаю над приложением Swing (в настоящее время работающим на Java 1.6 update 11), которое имеет некоторые проблемы с периодическим обновлением краски (например, есть артефакты и т. Д.). Это происходит только с некоторыми пользователями нашего приложения, но не с другими.

Проведя некоторое исследование, я обнаружил, что установка свойства sun.java2d.d3d на false может помочь, и фактически это помогло одному из наших пользователей.

Теперь, когда некоторые другие пользователи жалуются на эту проблему, я подумываю установить для свойства false для всех пользователей.

Мои основные вопросы следующие:

Что именно является причиной этого? Это видеокарта? Это водитель? Это ошибка от Sun? (например, http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6635462) Сочетание всех трех?

Другими словами, лучше всего просто отключить это свойство или оно влияет только на определенные видеокарты, в которых будет исправлено обновление до последнего драйвера?

Ответы [ 2 ]

2 голосов
/ 11 мая 2009

Java представила в R6 update 10 конвейер, который отображает графику на основе Direct3D. Согласно описанию релиза здесь он поддерживает только карты NVidia и ATI, что означает, что у всех, кто не использует эти карты, могут возникнуть проблемы. Поскольку это недавнее нововведение, я бы предположил, что у любого, кто использует старые драйверы для этих карт, также могут быть проблемы. Обновление видеодрайвера, вероятно, исправит первый случай, но не последний.

Если вы установите для sun.java2d.d3d значение false, худшее, что может случиться, - это то, что некоторые пользователи не смогут достичь производительности, которой они теоретически могли бы. Вы должны будете балансировать, является ли это предпочтительным по сравнению с проблемами, которые вы видите в данный момент.

1 голос
/ 11 мая 2009

Все ли операции рисования и изменения модели выполняются в EDT (например, изменение TableModel и т. Д.)?

...