2009-05-11 17 views
5

Estoy trabajando en una aplicación Swing (actualmente se ejecuta en Java 1.6 actualización 11) que tiene algunos problemas intermitentes de actualización de pintura (por ejemplo, hay artefactos, etc.). Esto solo le sucede a algunos usuarios de nuestra aplicación, pero no a otros.Problema con la pintura en la aplicación Java Swing en Java 1.6

Después de investigar un poco, encontré que establecer la propiedad sun.java2d.d3d en false puede ayudar y, de hecho, ayudó a uno de nuestros usuarios.

Ahora que otros usuarios se quejan del problema, estoy pensando en establecer la propiedad en false para todos los usuarios.

Mis preguntas básicas son las siguientes:

¿Qué es exactamente la causa de esto? ¿Es la tarjeta de video? ¿Es el conductor? ¿Es un error del Sol? (como http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6635462) ¿Combinación de los tres?

En otras palabras, ¿es mejor simplemente desactivar esta propiedad o está afectando solo ciertas tarjetas de video en las que corregirá una actualización del último controlador?

+0

Este problema ocurre con frecuencia al ejecutar Java dentro de VMWare. – user3553031

Respuesta

2

Java introdujo en R6 la actualización 10 una canalización que representa gráficos basados ​​en Direct3D. De acuerdo con la descripción de la versión here, solo admite tarjetas NVidia y ATI, lo que significa que cualquier persona que no use esas tarjetas puede tener un problema. Dado que es una innovación reciente, sugeriría que cualquier persona que use controladores antiguos para esas tarjetas también puede tener problemas. La actualización de un controlador de video probablemente arreglará el primer caso, pero no el último.

Si configura sun.java2d.d3d en falso, lo peor que puede pasar es que algunos usuarios no logren el rendimiento que teóricamente podrían lograr. Tendrá que equilibrar si esto es preferible a los problemas que está viendo en este momento.

+0

El usuario que tuvo el problema por primera vez tenía una ATI Radeon XPress 200 pero no verifiqué si tenían el controlador más reciente. La aplicación es una aplicación Swing bastante "estándar", es decir, sin operaciones 3D ni operaciones de pintura "fuera de lo normal". – Avrom

+0

Uno pensaría que se apagaría automáticamente para tarjetas de video no compatibles, suponiendo que fuera posible. – Avrom

1

¿Se ejecutan todas las operaciones de pintura y cambio de modelo en EDT (por ejemplo, cambio de TableModel, etc.)?