3737import java .awt .event .AdjustmentListener ;
3838import java .awt .event .FocusEvent ;
3939import java .awt .event .FocusListener ;
40+ import java .awt .event .MouseWheelEvent ;
41+ import java .awt .event .MouseWheelListener ;
4042import java .math .BigDecimal ;
4143import java .math .BigInteger ;
4244import java .text .DecimalFormat ;
6870 */
6971@ Plugin (type = InputWidget .class )
7072public class SwingNumberWidget extends SwingInputWidget <Number > implements
71- NumberWidget <JPanel >, AdjustmentListener , ChangeListener
73+ NumberWidget <JPanel >, AdjustmentListener , ChangeListener , MouseWheelListener
7274{
7375
7476 @ Parameter
@@ -159,6 +161,17 @@ else if (source == spinner) {
159161 }
160162 updateModel ();
161163 }
164+
165+ // -- MouseWheelListener methods --
166+
167+ @ Override
168+ public void mouseWheelMoved (final MouseWheelEvent e ) {
169+ int value = getValue ().intValue () + e .getWheelRotation ();
170+ value = Math .min (value , this .get ().getMax ().intValue ());
171+ value = Math .max (value , this .get ().getMin ().intValue ());
172+ spinner .setValue (value );
173+ syncSliders ();
174+ }
162175
163176 // -- Helper methods --
164177
@@ -180,6 +193,7 @@ private void addScrollBar(final Number min, final Number max,
180193 setToolTip (scrollBar );
181194 getComponent ().add (scrollBar );
182195 scrollBar .addAdjustmentListener (this );
196+ scrollBar .addMouseWheelListener (this );
183197 }
184198
185199 private void addSlider (final Number min , final Number max ,
@@ -213,6 +227,7 @@ private void addSlider(final Number min, final Number max,
213227 setToolTip (slider );
214228 getComponent ().add (slider );
215229 slider .addChangeListener (this );
230+ slider .addMouseWheelListener (this );
216231 }
217232
218233 /**
0 commit comments