2009-05-11 3 views
5

Je travaille sur une application Swing (actuellement en cours d'exécution sur Java 1.6 mise à jour 11) qui a quelques problèmes d'actualisation de peinture intermittents (par exemple il y a des artefacts etc.). Cela arrive seulement à certains utilisateurs de notre application mais pas à d'autres.Problème avec la peinture dans Java App Swing en Java 1.6

Après avoir fait quelques recherches, j'ai trouvé que la définition de la propriété sun.java2d.d3d à false peut aider et en fait, cela a aidé pour l'un de nos utilisateurs.

Maintenant que d'autres utilisateurs se plaignent du problème, je pense à définir la propriété sur false pour tous les utilisateurs.

Mes questions fondamentales sont les suivantes:

Quelle est la cause exactement cela? Est-ce la carte vidéo? Est-ce le conducteur? Est-ce un bug de Sun? (comme http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6635462) Combinaison des trois? En d'autres termes, est-il préférable de simplement désactiver cette propriété ou affecte-t-elle uniquement certaines cartes vidéo dans lesquelles une mise à jour du dernier pilote serait corrigée?

+0

Ce problème se produit fréquemment lors de l'exécution de Java dans VMWare. – user3553031

Répondre

2

Java introduit dans R6 mise à jour 10 un pipeline qui rend les graphiques basés sur Direct3D. Selon la description de la version here, il ne prend en charge que les cartes NVidia et ATI, ce qui signifie que toute personne n'utilisant pas ces cartes peut avoir un problème. Comme il s'agit d'une innovation récente, je suggérerais que quiconque utilise de vieux pilotes pour ces cartes pourrait aussi avoir des problèmes. La mise à niveau d'un pilote vidéo corrigera probablement le premier cas mais pas le dernier.

Si vous définissez sun.java2d.d3d sur false, le pire qui puisse arriver est que certains utilisateurs n'atteignent pas les performances théoriques. Vous devrez équilibrer si c'est préférable aux problèmes que vous voyez en ce moment.

+0

L'utilisateur qui a eu le premier problème avait un ATI Radeon XPress 200 mais je n'ai pas vérifié s'il avait le dernier pilote. L'application est une application Swing assez "standard", c'est-à-dire sans opérations 3D ou opérations de peinture "hors du commun". – Avrom

+0

On pourrait penser qu'il s'éteindrait automatiquement pour les cartes vidéo non supportées, en supposant que c'était possible. – Avrom

1

Est-ce que toutes les opérations de peinture et de changement de modèle s'exécutent sur EDT (par exemple en changeant TableModel etc.)?