Проблема с рисованием в приложении Java Swing на Java 1.6
Вопрос
Я работаю над приложением Swing (в настоящее время запущенным на Java 1.6 update 11), у которого есть некоторые проблемы с периодическим обновлением paint (напримересть артефакты и т.д.).Это происходит только с некоторыми пользователями нашего приложения, но не с другими.
Проведя некоторые исследования, я обнаружил, что установка свойства sun.java2d.d3d
Для false
может помочь, и на самом деле, это помогло одному из наших пользователей.
Теперь, когда некоторые другие пользователи жалуются на проблему, я подумываю о том, чтобы установить для свойства значение false
для всех пользователей.
Мои основные вопросы заключаются в следующем:
В чем именно заключается причина этого?Это из-за видеокарты?Это из-за водителя?Это ошибка от Sun?(например, http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6635462) Сочетание всех трех?
Другими словами, лучше всего просто отключить это свойство или оно влияет только на определенные видеокарты, в которых исправит обновление до последней версии драйвера?
Решение
Java представила в обновлении R6 10 конвейер, который визуализирует графику на основе Direct3D.Согласно описанию релиза здесь он поддерживает только карты NVidia и ATI, что означает, что у любого, кто не использует эти карты, могут возникнуть проблемы.Поскольку это недавнее нововведение, я бы предположил, что у любого, кто использует старые драйверы для этих карт, также могут возникнуть проблемы.Обновление видеодрайвера, вероятно, исправит первый случай, но не последний.
Если вы установите sun.java2d.d3d в значение false, худшее, что может случиться, - это то, что некоторые пользователи не достигнут той производительности, которая теоретически могла бы быть.Вам придется взвесить, предпочтительнее ли это по сравнению с проблемами, которые вы наблюдаете в данный момент.
Другие советы
Выполняются ли все операции по покраске и смене модели в EDT (напримеризменение табличной модели и т.д.)?