Mega Code Archive

 
Categories / Java Tutorial / Development
 

Listening for a Vetoable Property Change Event

// A vetoable property change event is fired when a constrained property is changed.  // A listener can veto the change by throwing PropertyVetoException and preventing the change. import java.beans.PropertyChangeEvent; import java.beans.PropertyVetoException; import java.beans.VetoableChangeListener; import java.beans.VetoableChangeSupport; public class Main {   public static void main(String[] argv) throws Exception {     MyBean bean = new MyBean();     bean.addVetoableChangeListener(new MyVetoableChangeListener());   } } class MyVetoableChangeListener implements VetoableChangeListener {   public void vetoableChange(PropertyChangeEvent evt)       throws PropertyVetoException {     Object oldValue = evt.getOldValue();     Object newValue = evt.getNewValue();     boolean veto = false;     if (veto) {       throw new PropertyVetoException("the reason for the veto", evt);     }   } } class MyBean {   VetoableChangeSupport vceListeners = new VetoableChangeSupport(this);   int myProperty;   public int getMyProperty() {     return myProperty;   }   public void setMyProperty(int newValue) throws PropertyVetoException {     try {       vceListeners.fireVetoableChange("myProperty", new Integer(myProperty),           new Integer(newValue));       myProperty = newValue;     } catch (PropertyVetoException e) {       throw e;     }   }   public synchronized void addVetoableChangeListener(       VetoableChangeListener listener) {     vceListeners.addVetoableChangeListener(listener);   }   public synchronized void removeVetoableChangeListener(       VetoableChangeListener listener) {     vceListeners.removeVetoableChangeListener(listener);   } }