2009-05-14 8 views
3

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?

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!

Questions connexes