Как плавно прокрутить композицию SWT? - PullRequest
3 голосов
/ 14 мая 2009

Я использую SWT ScrolledComposite, но когда я выполняю прокрутку в Windows, у меня появляются разрывы / мерцания при быстрой прокрутке. Что я могу сделать, чтобы удвоить буфер или уменьшить этот эффект, или что я могу сделать, чтобы переопределить функцию прокрутки по умолчанию и сделать ее более плавной? В области прокрутки есть текстовые поля, поэтому я не думаю, что холст сработает.

1 Ответ

0 голосов
/ 31 января 2012

Хитрость в том, чтобы играть с задержкой и использовать однопиксельную прокрутку.

Вот части кода, как я на самом деле это делаю:

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;
    }
};

Надеюсь, это поможет!

...