J'utilise un ScrolledComposite SWT, mais quand je défile dans Windows, j'ai des déchirures/scintillements si je défile rapidement. Que puis-je faire pour doubler le tampon ou réduire cet effet, ou que puis-je faire pour remplacer la fonctionnalité de défilement par défaut et la faire défiler plus facilement? Il y a des zones de texte dans la zone de défilement donc je ne pense pas qu'une toile fonctionnerait.Comment faire défiler en douceur le composite SWT?
3
A
Répondre
0
L'astuce consiste à jouer avec le retard et à utiliser un défilement d'un pixel.
Voici les parties du code que je fais en fait que:
public void scrollOnePixelUp() {
scrolledComposite.getContent().setLocation(0, scrolledComposite.getContent().getLocation().y - 1);
}
public void scrollOnePixelDown() {
scrolledComposite.getContent().setLocation(0, scrolledComposite.getContent().getLocation().y + 1);
}
private int pixelScrollDelay = 50;//ms
scrollingThread = new Thread() {
public void run() {
doScrolling = true;
int i = 0;
while((i < scrollLength) && running && doScrolling) {
i++;
if (d.isDisposed())
return;
d.asyncExec(new Runnable() {
public void run() {
if (scrollUp)
scrollOnePixelUp();
else
scrollOnePixelDown();
}
});
try {
sleep(pixelScrollDelay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
doScrolling = false;
}
};
Hope that helps!