Quick lesson learned. If you have a property change listener registered against a specific property name, you have to use removePropertyChangeListener(String, PropertyChangeListener) and not removePropertyChangeListener(PropertyChangeListener) when you want to remove it. Basically, you cannot do the following: PropertyChangeListener foo = new XXX(); public void enable() { addPropertyChangeListener("SomeMessage", foo); } public void disable() { removePropertyChangeListener(foo); } ...