Java Reference
In-Depth Information
{
String oldString = ourString;
ourString = newString;
PropertyChangeEvent event = new PropertyChangeEvent(this,
"ourString", oldString, newString);
for(PropertyChangeListener l: listeners)
{
l.propertyChange(event);
}
}
public void addPropertyChangeListener(PropertyChangeListener l)
{
listeners.add(l);
}
public void removePropertyChangeListener(
PropertyChangeListener l)
{
listeners.remove(l);
}
}
Für die Eigenscha en von Java Beans gibt es auch die Vorstellung, dass vor der Änderung
einer Eigenscha Beobachter gefragt werden, ob sie mit der Änderung einverstanden sind
oder ihr Veto dagegen einlegen möchten. Die befragten Beobachter müssen zu diesem
Zweck die Schnittstelle VetoableChangeListener implementieren:
package java.beans;
public interface VetoableChangeListener extends EventListener
{
public void vetoableChange(PropertyChangeEvent event)
throws PropertyVetoException;
}
Die Entscheidung, ob ein Befragter einverstanden ist oder nicht, wird nicht durch den Rück-
gabewert der Methode vetoableChange mitgeteilt. Es ist vielmehr so, dass das Einverständ-
nis durch eine ganz normale Rückkehr aus der Methode und ein Veto durch das Auslösen
einer Ausnahme des Typs PropertyVetoException angezeigt wird. Man nennt Attribute
eines Beans, gegen dessen Änderung andere ein Veto einlegen können, eingeschränkte
Eigenscha en (Constrained Properties). Selbstverständlich kann eine Eigenscha gleichzei-
tig gebunden und eingeschränkt sein. Das Beispiel aus Listing 8.1 kann man zu diesem
Zweck so erweitern, dass ein weiteres Attribut des Typs ArrayList<VetoableChangeListener>
hinzugefügt wird (s. Listing 8.2).
Listing 8.2 Bean-Klasse mit gebundener und eingeschränkter Eigenscha
package javacomp.javabeans;
import java.beans.*;
import java.util.ArrayList;
public class BeanWithBoundAndConstrainedProperty
{
 
Search WWH ::




Custom Search