static A onChange(A spinner, O r) { ret onChange(spinner, toRunnable(r)); } static A onChange(A spinner, Runnable r) { if (r != null) swing { spinner.addChangeListener(changeListener(r)); } ret spinner; } static A onChange(A b, O r) { swing { b.addItemListener(itemListener(r)); } ret b; } static void onChange(JTextComponent tc, O r) { onUpdate(tc, r); } static A onChange(A slider, fO r) { swing { slider.addChangeListener(changeListener(r)); } ret slider; } static JComboBox onChange(JComboBox cb, IVF1 f) { if (f != null) addActionListener(cb, -> f.get(getSelectedItem_typed(cb))); ret cb; } static JComboBox onChange(O r, JComboBox cb) { ret onChange(cb, r); } static JComboBox onChange(JComboBox cb, fO r) { if (isEditableComboBox(cb)) onChange(textFieldFromComboBox(cb), r); else onSelectedItem(cb, voidfunc(S s) { callF(r) }); ret cb; }