Solution: PropertyChangeListener
Obviously, using a ChangeListener for complex widgets is not productive.
(How would you know what action was taken?)
Swing therefore provides a PropertyChangeListener interface to capture state changes in complex widgets. (Note that its part of the beans package)
public void propertyChange(PropertyChangeEvent e);
Useful methods in the PropertyChangeEvent object include:
public String getPropertyName();
public Object getNewValue();
public Object getOldValue();
public void setPropagationId(Object propagationId);
public Object getPropagationId();