Как изменить горизонтальный прокрутку ScrolledComposite? - PullRequest
1 голос
/ 13 мая 2009

У меня есть приложение, которое отображает ScrolledComposite. Пользователи жалуются, что шаг горизонтальной прокрутки слишком мал, то есть каждый щелчок на стрелке горизонтальной прокрутки в настоящее время перемещает полосу на один пиксель за раз. Они хотят, чтобы отдельные щелчки вызывали большее горизонтальное движение. Может кто-нибудь объяснить, как я мог бы это реализовать? Ниже приведен фрагмент кода:

ScrolledComposite myScrolledComposite = new ScrolledComposite(parent, 
        SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);

if ( myScrolledComposite == null) {
    throw new NullPointerException("ScenePreView.java:  " + 
            "Method createPartControl()  " + 
            "ScrolledComposite myScrolledComposite == null."); 
}

Composite myComposite = new Composite(myScrolledComposite, SWT.NONE);

if ( myComposite == null) {
    throw new NullPointerException("ScenePreView.java:  " + 
            "Method createPartControl()  " + 
            "Composite myComposite == null."); 
}

myScrolledComposite.setContent(myComposite);

Ответы [ 4 ]

3 голосов
/ 26 августа 2009

Это должно работать довольно хорошо и обеспечивать используемые значения по умолчанию. Он должен обновляться автоматически при изменении размера элемента управления в ScrolledComposite.

myComposite.addControlListener( new ControlAdapter() {
    @Override
    public void controlResized( ControlEvent e ) {
        ScrollBar sbX = scrolledComposite.getHorizontalBar();
        if ( sbX != null ) {
            sbX.setPageIncrement( sbX.getThumb() );
            sbX.setIncrement( Math.max( 1, sbX.getThumb() / 5 ) );
        }
    }
});
2 голосов
/ 13 мая 2009

Получить полосу прокрутки из композита и установить ее приращение.

.

myScrolledComposite.getVerticalBar () setIncrement (10);

0 голосов
/ 13 мая 2009

Я знаю, что это больше, чем вы просили, но я настоятельно рекомендую проверить SWT-анимацию , в которой реализована плавная прокрутка. Это сделает ваше приложение круче.

Вы можете проверить это и посмотреть источники - это хороший пример (пока немного продвинутый) того, как играть с прокруткой.

0 голосов
/ 13 мая 2009

Используйте метод setIncrement () класса полосы прокрутки SWT. Это позволяет изменить величину, на которую область прокрутки перемещается при нажатии кнопок со стрелками. См. Справочник API для SWT

...