// f: voidfunc(float) static JSlider liveSliderZeroToX(final float maxValue, final float def, fO f) { ret swing(func -> JSlider { final int max = 10000; final float factor = max/maxValue; final JSlider slider = new JSlider(0, max, iround(def*factor)); slider.addChangeListener(new ChangeListener { int lastValue = slider.getValue(); public void stateChanged(ChangeEvent e) { int value = slider.getValue(); if (value != lastValue) { lastValue = value; float x = value/factor; setToolTip(slider, str(x)); pcallF(f, x); } } }); ret slider; }); }