7
votes

Se débarrasser du scintillement dans SWT

Nous utilisons une classe suivante pour montrer une barre de progression dans notre application Java: TEXTPROGRESSBAR

Malheureusement, nous avons des problèmes avec scintillement lors de l'utilisation de celle-ci (Win 7, Java 7). Avez-vous des conseils sur la façon dont nous pouvons éviter cela? Pouvons-nous en quelque sorte le reposer moins fréquemment, utiliser un double tampon ou autre chose? Toute astuce est grandement appréciée!


1 commentaires

Tout d'abord, avez-vous vu la note dans le Javadoc? "Restriction: Cette classe n'est pas destinée à être sous-classée par les clients." Vous devriez définitivement d'abord essayer swt.double_buffered , mais il n'y a pas de garantie pour votre cas.


4 Réponses :


6
votes

Tout d'abord, essayez de passer swt.double_buffered pour le paramètre de style sur la construction. Si cela ne permet pas d'améliorer la situation, passez à la chaîne mère et ajoutez swt.double_buffered à leur appel de constructeur à la place.

Si vous n'avez pas de contrôle sur le parent, vous aurez probablement besoin d'envelopper votre commande dans un autre composite qui a activé ce drapeau.


2 commentaires

Merci, j'ai essayé ça mais malheureusement ça n'a pas fonctionné. J'ai essayé de l'ajouter au constructeur de TextProgressBar et j'ai également essayé le composite parent.


Qu'est-ce qui déclenche les redessins que vous voyez? Si vous pouvez identifier une zone où il est juste d'être appelé trop souvent trop souvent, vous pouvez envelopper cela avec un appel à .SetReDraw (FALSE) sur votre contrôle, faites le travail qui provoque le redessinement rapide normalement, puis appelez .SeReRraw (True). à la fin.



-3
votes

Vous pouvez essayer de retarder le temps avec thread.sleep () . Cela a fonctionné pour moi lorsque j'avais le même problème lorsque j'avais le même problème avec Jtales


1 commentaires

Veuillez noter que je parle de SWT. Ne pas balancer.



1
votes

Essayez swot.no_background d'abord, et s'il n'utilise pas swt.double_buffered . N'utilisez pas les deux en même temps, car il n'ya pas de point. Voir le Discussion


0 commentaires

1
votes

Disclaimer: Je sais que la question pose spécifiquement de la section textProgressbar . Cependant, je pense que beaucoup de points de vue de cette question ne sont pas limités à ce widget.

J'ai eu un problème avec le scintillement du widget texte , que je n'ai pu résoudre ni en utilisant le style swt.double_buffered , ni en l'enveloppant avec le < Code> composite , ni en appliquant une combinaison d'entre eux.

Enfin, j'ai pu résoudre ce problème en modifiant simplement le type de widget du texte sur styledtext . Il n'y a pas de scintillement, même sans le swt.double_buffered style et sans le composite wrapper.

J'espère que cela aidera quelqu'un qui a été attiré par le titre général de cette question.


0 commentaires