Scroll 如何平滑滚动SWT组合?

Scroll 如何平滑滚动SWT组合?,scroll,swt,scrolledcomposite,Scroll,Swt,Scrolledcomposite,我使用的是SWT ScrolledComposite,但当我在Windows中滚动时,如果我滚动到fast,我会看到一些撕裂/闪烁。我可以做些什么来增加缓冲区或减少这种影响,或者我可以做些什么来覆盖默认的滚动功能并使其滚动更加平滑?滚动区域中有文本框,因此我认为画布不起作用。诀窍是延迟播放并使用一个像素滚动 下面是我如何实际做到这一点的部分代码: public void scrollOnePixelUp() { scrolledComposite.getContent().setLoca

我使用的是SWT ScrolledComposite,但当我在Windows中滚动时,如果我滚动到fast,我会看到一些撕裂/闪烁。我可以做些什么来增加缓冲区或减少这种影响,或者我可以做些什么来覆盖默认的滚动功能并使其滚动更加平滑?滚动区域中有文本框,因此我认为画布不起作用。

诀窍是延迟播放并使用一个像素滚动

下面是我如何实际做到这一点的部分代码:

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;
    }
};
public void scrollOnePixelUp(){
scrolledComposite.getContent().setLocation(0,scrolledComposite.getContent().getLocation().y-1);
}
public void scrollOnePixelDown(){
scrolledComposite.getContent().setLocation(0,scrolledComposite.getContent().getLocation().y+1);
}
私有整数像素滚动延迟=50//太太
scrollingThread=新线程(){
公开募捐{
多斯克罗林=真;
int i=0;
while((i
希望有帮助