Вы можете подключить один экземпляр ChangeListener ко всем вашим элементам управления, который может выглядеть (при наличии внутреннего класса):
private class ListenerImpl implements ChangeListener {
public void stateChanged(ChangeEvent e) { save(); }
}
, чтобы добавить этот слушатель за один развы можете зациклить дочерние элементы вашего Container
следующим образом:
final ListenerImpl l = new ListenerImpl();
for (Component c : getComponents()) {
if (c instanceof JSpinner) {
((JSpinner)c).addChangeListener(l);
} else if (c instanceof JTextPane ) { } // ... other types of components
}
вы должны искать различные типы компонентов, потому что нет интерфейса, который определяет метод addChangeListener(..)
(который я знаюв).