static JSlider onSliderValueChanged(JSlider slider, IVF1 onChange) swing { slider.addChangeListener(new ChangeListener { int lastValue = slider.getValue(); public void stateChanged(ChangeEvent e) { int value = slider.getValue(); if (value != lastValue) { lastValue = value; setToolTip(slider, str(value)); pcallF(onChange, value); } } }); ret slider; } static JSlider onSliderValueChanged(JSlider slider, Runnable onChange) { if (onChange != null) onSliderValueChanged(slider, runnableToIVF1(onChange)); ret slider; }