If you use a SWT Scale object (a.k.a. a Slider), you might want to have it move as your user uses their scroll wheel on their mouse. Here’s the code to make it happen.
Scale verticalScale = new Scale(composite, SWT.VERTICAL); verticalScale.addMouseWheelListener(new MouseWheelListener() { public void mouseScrolled(final MouseEvent e) { Scale src = (Scale)e.getSource(); src.setSelection( src.getSelection() - e.count ); } });
You can scroll faster by doing (2*e.count) or similar… Note that it is necessary to subtract the MouseEvent.count because in a vertical orientation, a Scale’s max value is at the bottom, not at the top.
You can also do this generically for horizontal and vertical scales with the following MouseWheelListener:
MouseWheelListener wheelListener = new MouseWheelListener() { public void mouseScrolled(final MouseEvent e) { Scale src = (Scale)e.getSource(); if( (src.getStyle() & SWT.VERTICAL) != 0 ) { src.setSelection( src.getSelection() - e.count ); } else { src.setSelection( src.getSelection() + e.count ); } } };
If you don’t want to respond to the scroll wheel for horizontal scales, you can simply comment out the else block.