public class PropertyChangeSupport extends Object implements Serializable
PropertyChangeEvent をそれらにディスパッチします。このクラスのインスタンスを Bean のメンバーフィールドとして使用し、こうした種類の処理をそれに委譲できます。PropertyChangeListener は、すべてのプロパティーまたは名前で指定されたプロパティーに対して登録できます。
次は、JavaBeans™ 仕様に記載されている規則と推奨事項に従った PropertyChangeSupport の使用例です。
public class MyBean {
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener listener) {
this.pcs.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
this.pcs.removePropertyChangeListener(listener);
}
private String value;
public String getValue() {
return this.value;
}
public void setValue(String newValue) {
String oldValue = this.value;
this.value = newValue;
this.pcs.firePropertyChange("value", oldValue, newValue);
}
[...]
}
PropertyChangeSupport インスタンスはスレッドセーフです。
このクラスは直列化可能です。直列化した場合、直列化可能なリスナーが保存および復元されます。直列化の際、直列化可能でないリスナーはスキップされます。
| コンストラクタと説明 |
|---|
PropertyChangeSupport(Object sourceBean)
PropertyChangeSupport オブジェクトを構築します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void |
addPropertyChangeListener(PropertyChangeListener listener)
PropertyChangeListener をリスナーリストに追加します。
|
void |
addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
特定のプロパティーの PropertyChangeListener を追加します。
|
void |
fireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue)
登録されているリスナーに boolean 型のインデックス付きバウンドプロパティーの更新を報告して、すべてのプロパティーまたは指定された名前を持つプロパティーの更新を追跡します。
|
void |
fireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue)
登録されているリスナーに整数型のインデックス付きバウンドプロパティーの更新を報告して、すべてのプロパティーまたは指定された名前を持つプロパティーの更新を追跡します。
|
void |
fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue)
登録されているリスナーにインデックス付きバウンドプロパティーの更新を報告して、すべてのプロパティーまたは指定された名前を持つプロパティーの更新を追跡します。
|
void |
firePropertyChange(PropertyChangeEvent event)
登録されているリスナーにプロパティー変更イベントをトリガーして、すべてのプロパティーまたは指定された名前を持つプロパティーの更新を追跡します。
|
void |
firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
登録されているリスナーに boolean 型のバウンドプロパティーの更新を報告して、すべてのプロパティーまたは指定された名前を持つプロパティーの更新を追跡します。
|
void |
firePropertyChange(String propertyName, int oldValue, int newValue)
登録されているリスナーに整数型のバウンドプロパティーの更新を報告して、すべてのプロパティーまたは指定された名前を持つプロパティーの更新を追跡します。
|
void |
firePropertyChange(String propertyName, Object oldValue, Object newValue)
登録されているリスナーにバウンドプロパティーの更新を報告して、すべてのプロパティーまたは指定された名前を持つプロパティーの更新を追跡します。
|
PropertyChangeListener[] |
getPropertyChangeListeners()
addPropertyChangeListener() によって PropertyChangeSupport オブジェクトに追加されたすべてのリスナーの配列を返します。
|
PropertyChangeListener[] |
getPropertyChangeListeners(String propertyName)
指定されたプロパティーに関連付けられているすべてのリスナーの配列を返します。
|
boolean |
hasListeners(String propertyName)
特定のプロパティーにリスナーがあるかどうかを判定します。あらゆるプロパティーに登録されたリスナーが含まれます。
|
void |
removePropertyChangeListener(PropertyChangeListener listener)
PropertyChangeListener をリスナーリストから削除します。
|
void |
removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
特定のプロパティーの PropertyChangeListener を削除します。
|
public PropertyChangeSupport(Object sourceBean)
PropertyChangeSupport オブジェクトを構築します。sourceBean - すべてのイベントのソースとして指定される Bean。public void addPropertyChangeListener(PropertyChangeListener listener)
listener が null の場合、例外はスローされず、何も処理は行われません。listener - 追加される PropertyChangeListenerpublic void removePropertyChangeListener(PropertyChangeListener listener)
listener が 2 回以上追加された場合は、削除されたあとに 1 回少ない通知が行われます。listener が null の場合、または追加されなかった場合、例外はスローされず、何も処理は行われません。listener - 削除される PropertyChangeListenerpublic PropertyChangeListener[] getPropertyChangeListeners()
指定されたプロパティーによって追加されたリスナーがある場合、PropertyChangeListener と PropertyChangeListenerProxy からなる配列が返されます。リスナーの識別に関係している呼び出し元メソッドは、個々の要素をテストして PropertyChangeListenerProxy であるかどうかの確認、キャスト、パラメータの確認を行う必要があります。
PropertyChangeListener[] listeners = bean.getPropertyChangeListeners();
for (int i = 0; i < listeners.length; i++) {
if (listeners[i] instanceof PropertyChangeListenerProxy) {
PropertyChangeListenerProxy proxy =
(PropertyChangeListenerProxy)listeners[i];
if (proxy.getPropertyName().equals("foo")) {
// proxy is a PropertyChangeListener which was associated
// with the property named "foo"
}
}
}
PropertyChangeListeners、リスナーが追加されていない場合は空の配列PropertyChangeListenerProxypublic void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
propertyName または listener が null の場合、例外はスローされず、何も処理は行われません。propertyName - 待機しているプロパティーの名前。listener - 追加される PropertyChangeListenerpublic void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
listener が 2 回以上追加された場合は、削除されたあとに 1 回少ない通知が行われます。propertyName が null の場合、例外はスローされず、何も処理は行われません。listener が null の場合、または指定されたプロパティーに追加されなかった場合、例外はスローされず、何も処理は行われません。propertyName - 待機していたプロパティーの名前。listener - 削除される PropertyChangeListenerpublic PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
propertyName - 待機しているプロパティーの名前PropertyChangeListeners。このようなリスナーが追加されていない場合、または propertyName が null の場合は、空の配列が返されます。public void firePropertyChange(String propertyName, Object oldValue, Object newValue)
古い値と新しい値が等しく、null でない場合、イベントはトリガーされません。
これは、より一般的な firePropertyChange(PropertyChangeEvent) メソッドの簡易ラッパーにすぎません。
propertyName - 変更されたプロパティーのプログラム名oldValue - プロパティーの古い値newValue - プロパティーの新しい値public void firePropertyChange(String propertyName, int oldValue, int newValue)
古い値と新しい値が等しい場合、イベントはトリガーされません。
これは、より一般的な firePropertyChange(String, Object, Object) メソッドの簡易ラッパーにすぎません。
propertyName - 変更されたプロパティーのプログラム名oldValue - プロパティーの古い値newValue - プロパティーの新しい値public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
古い値と新しい値が等しい場合、イベントはトリガーされません。
これは、より一般的な firePropertyChange(String, Object, Object) メソッドの簡易ラッパーにすぎません。
propertyName - 変更されたプロパティーのプログラム名oldValue - プロパティーの古い値newValue - プロパティーの新しい値public void firePropertyChange(PropertyChangeEvent event)
指定されたイベントの以前の値と新しい値が等しくて null でない場合、イベントはトリガーされません。
event - トリガーされる PropertyChangeEventpublic void fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue)
古い値と新しい値が等しく、null でない場合、イベントはトリガーされません。
これは、より一般的な firePropertyChange(PropertyChangeEvent) メソッドの簡易ラッパーにすぎません。
propertyName - 変更されたプロパティーのプログラム名index - 変更されたプロパティー要素のインデックスoldValue - プロパティーの古い値newValue - プロパティーの新しい値public void fireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue)
古い値と新しい値が等しい場合、イベントはトリガーされません。
これは、より一般的な fireIndexedPropertyChange(String, int, Object, Object) メソッドの簡易ラッパーにすぎません。
propertyName - 変更されたプロパティーのプログラム名index - 変更されたプロパティー要素のインデックスoldValue - プロパティーの古い値newValue - プロパティーの新しい値public void fireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue)
古い値と新しい値が等しい場合、イベントはトリガーされません。
これは、より一般的な fireIndexedPropertyChange(String, int, Object, Object) メソッドの簡易ラッパーにすぎません。
propertyName - 変更されたプロパティーのプログラム名index - 変更されたプロパティー要素のインデックスoldValue - プロパティーの古い値newValue - プロパティーの新しい値public boolean hasListeners(String propertyName)
propertyName が null の場合は、すべてのプロパティーに登録されているリスナーのみがチェックされます。propertyName - プロパティー名。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.