Skip to content

Commit d2e06cb

Browse files
committed
Avoid IllegalArgumentException: (minimum <= value <= maximum) with spinner models.
See https://forum.image.sc/t/trackmate-not-opening-on-mac/105975
1 parent 9200a75 commit d2e06cb

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

src/main/java/fiji/plugin/trackmate/gui/components/ConfigureViewsPanel.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,10 @@ public ConfigureViewsPanel(
335335
chckbxLimitZDepth.setFont( SMALL_FONT );
336336
panelDrawingZDepth.add( chckbxLimitZDepth );
337337

338-
final SpinnerNumberModel numberModelDrawingZDepth = new SpinnerNumberModel( ds.getZDrawingDepth(), 0.5, 5000., 0.5 );
338+
final double minZDrawingDepth = 0.5;
339+
final double maxZDrawingDepth = 5000.;
340+
final double zDrawingDepth = Math.min( Math.max( ds.getZDrawingDepth(), minZDrawingDepth ), maxZDrawingDepth );
341+
final SpinnerNumberModel numberModelDrawingZDepth = new SpinnerNumberModel( zDrawingDepth, minZDrawingDepth, maxZDrawingDepth, 0.5 );
339342
final JSpinner spinnerDrawingZDepth = new JSpinner( numberModelDrawingZDepth );
340343
spinnerDrawingZDepth.setFont( SMALL_FONT );
341344
panelDrawingZDepth.add( spinnerDrawingZDepth );

src/main/java/fiji/plugin/trackmate/gui/displaysettings/SliderPanel.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ public SliderPanel( final String name, final BoundedValue model, final int spinn
7070

7171
slider = new JSlider( SwingConstants.HORIZONTAL, model.getRangeMin(), model.getRangeMax(), model.getCurrentValue() );
7272
spinner = new JSpinner();
73-
spinner.setModel( new SpinnerNumberModel( model.getCurrentValue(), model.getRangeMin(), model.getRangeMax(), spinnerStepSize ) );
73+
74+
final double min = model.getRangeMin();
75+
final double max = model.getRangeMax();
76+
final double val = Math.max( Math.min( model.getCurrentValue(), max ), min );
77+
spinner.setModel( new SpinnerNumberModel( val, min, max, spinnerStepSize ) );
7478

7579
slider.addChangeListener( new ChangeListener()
7680
{

src/main/java/fiji/plugin/trackmate/gui/displaysettings/SliderPanelDouble.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,11 @@ public SliderPanelDouble(
8888

8989
dmin = model.getRangeMin();
9090
dmax = model.getRangeMax();
91+
final double val = Math.min( Math.max( model.getCurrentValue(), dmin ), dmax );
9192

92-
slider = new JSlider( SwingConstants.HORIZONTAL, 0, sliderLength, toSlider( model.getCurrentValue() ) );
93+
slider = new JSlider( SwingConstants.HORIZONTAL, 0, sliderLength, toSlider( val ) );
9394
spinner = new JSpinner();
94-
spinner.setModel( new SpinnerNumberModel( model.getCurrentValue(), dmin, dmax, spinnerStepSize ) );
95+
spinner.setModel( new SpinnerNumberModel( val, dmin, dmax, spinnerStepSize ) );
9596

9697
slider.addChangeListener( new ChangeListener()
9798
{

0 commit comments

Comments
 (0)