Как прокрутить композицию с прокруткой с помощью колесика мыши в SWT
Я хотел бы знать, можно ли прокрутить ScrolledComposite
с помощью колесика мыши. По умолчанию это не работает.
3 ответа
Решение
Судя по всему, необходимо создать слушатель колесика мыши для вашего композита. Вы можете использовать что-то вроде этого в качестве основы:
scrolledComposite = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
GridData scrollGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
scrolledComposite.setLayoutData(scrollGridData);
layout = new GridLayout();
scrolledComposite.setLayout(layout);
compositeWrapper = new Composite(scrolledComposite);
compositeWrapper.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
compositeWrapper.setLayout(layout);
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setExpandVertical(true);
scrolledComposite.addListener(SWT.MouseWheel, new Listener() {
public void handleEvent(Event event) {
int wheelCount = event.count;
wheelCount = (int) Math.ceil(wheelCount / 3.0f);
while (wheelCount < 0) {
scrolledComposite.getVerticalBar().setIncrement(4);
wheelCount++;
}
while (wheelCount > 0) {
scrolledComposite.getVerticalBar().setIncrement(-4);
wheelCount--;
}
}
});
Поискав, я нашел простое решение,
scrolledComposite.addListener(SWT.Activate, new Listener() {
public void handleEvent(Event e) {
scrolledComposite.setFocus();
}
});
Я не уверен, почему @AlexanderGavrilov пишет так много кода, у меня тоже работает следующее:
scrolledComposite.addListener(SWT.MouseWheel, new Listener() {
public void handleEvent(Event event) {
scrolledComposite.getVerticalBar().setIncrement(e.count*3);
}
});