Основное отличие заключается в том, что PropertyChangeListener
применяются к привязанным свойствам, в то время как VetoableChangeListener
применяются к ограниченным свойствам.
связанное свойство - это просто свойство, в то время как ограниченное свойство - это свойство, с помощью которого слушатели могут выразить свое мнение относительно предстоящего изменения: они могут отказать изменить происходящее.
На самом деле происходит то, что когда вы уведомляете об изменении права вето, вы делаете что-то вроде
VetoableChangeSupport vcs;
vcs.fireVetoableChange(...);
и это может выдать PropertyVetoException
, который сообщит вашему бину, что наблюдатель хочет заблокировать изменение этого свойства (оно должно быть откатано).