The main difference is that PropertyChangeListener applied to related properties, and VetoableChangeListener applied to restricted properties.
A related property is simply a property, while a limited property is a property on which listeners can express themselves about the change that will be made: they can reject the change.
What actually happens is that when you notify you of a change in veto rights, you will do something like
VetoableChangeSupport vcs; vcs.fireVetoableChange(...);
and this may raise a PropertyVetoException , which tells your bean that the observer wants to block this property change (it must be rolled back).
Jack
source share