モジュール java.desktop
パッケージ java.beans

クラスPropertyChangeSupport

  • すべての実装されたインタフェース:
    Serializable
    直系の既知のサブクラス:
    SwingPropertyChangeSupport

    public class PropertyChangeSupport
    extends Object
    implements Serializable
    バウンド・プロパティをサポートするBeanで使用できるユーティリティ・クラスです。 リスナーのリストを管理し、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インスタンスはスレッドセーフです。

    このクラスは直列化可能です。 直列化した場合、直列化可能なリスナーが保存および復元されます。 直列化の際、直列化可能でないリスナーはスキップされます。

    導入されたバージョン:
    1.1
    関連項目:
    VetoableChangeSupport, 直列化された形式
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      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を削除します。
    • コンストラクタの詳細

      • PropertyChangeSupport

        public PropertyChangeSupport​(Object sourceBean)
        PropertyChangeSupportオブジェクトを構築します。
        パラメータ:
        sourceBean - すべてのイベントのソースとして指定されるBean。
    • メソッドの詳細

      • addPropertyChangeListener

        public void addPropertyChangeListener​(PropertyChangeListener listener)
        PropertyChangeListenerをリスナー・リストに追加します。 リスナーは、すべてのプロパティに対して登録されます。 同じリスナー・オブジェクトを複数回追加でき、追加した回数だけリスナー・オブジェクトが呼び出されます。 listenerがnullの場合、例外はスローされず、何も処理は行われません。
        パラメータ:
        listener - 追加されるPropertyChangeListener
      • removePropertyChangeListener

        public void removePropertyChangeListener​(PropertyChangeListener listener)
        PropertyChangeListenerをリスナー・リストから削除します。 すべてのプロパティで登録されたPropertyChangeListenerを削除します。 同じイベント・ソースにlistenerが2回以上追加された場合は、削除されたあとに1回少ない通知が行われます。 listenerがnullの場合、または追加されなかった場合、例外はスローされず、何も処理は行われません。
        パラメータ:
        listener - 削除されるPropertyChangeListener
      • getPropertyChangeListeners

        public PropertyChangeListener[] getPropertyChangeListeners()
        addPropertyChangeListener()によってPropertyChangeSupportオブジェクトに追加されたすべてのリスナーの配列を返します。

        指定されたプロパティによって追加されたリスナーがある場合、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、リスナーが追加されていない場合は空の配列
        導入されたバージョン:
        1.4
        関連項目:
        PropertyChangeListenerProxy
      • addPropertyChangeListener

        public void addPropertyChangeListener​(String propertyName,
                                              PropertyChangeListener listener)
        特定のプロパティのPropertyChangeListenerを追加します。 リスナーが呼び出されるのは、firePropertyChangeの呼出しにより、その特定のプロパティが指定されたときだけです。 同じリスナー・オブジェクトを複数回追加できます。 各プロパティでは、リスナーがそのプロパティに追加された回数だけリスナーが呼び出されます。 propertyNameまたはlistenerがnullの場合、例外はスローされず、何も処理は行われません。
        パラメータ:
        propertyName - 待機しているプロパティの名前。
        listener - 追加されるPropertyChangeListener
        導入されたバージョン:
        1.2
      • removePropertyChangeListener

        public void removePropertyChangeListener​(String propertyName,
                                                 PropertyChangeListener listener)
        特定のプロパティのPropertyChangeListenerを削除します。 指定したプロパティの同じイベント・ソースにlistenerが2回以上追加された場合は、削除されたあとに1回少ない通知が行われます。 propertyNameがnullの場合、例外はスローされず、何も処理は行われません。 listenerがnullの場合、または指定されたプロパティに追加されなかった場合、例外はスローされず、何も処理は行われません。
        パラメータ:
        propertyName - 待機していたプロパティの名前。
        listener - 削除されるPropertyChangeListener
        導入されたバージョン:
        1.2
      • getPropertyChangeListeners

        public PropertyChangeListener[] getPropertyChangeListeners​(String propertyName)
        指定されたプロパティに関連付けられているすべてのリスナーの配列を返します。
        パラメータ:
        propertyName - 待機しているプロパティの名前
        戻り値:
        名前付きプロパティに関連付けられているすべてのPropertyChangeListeners このようなリスナーが追加されていない場合、またはpropertyNameがnullの場合は、空の配列が返されます。
        導入されたバージョン:
        1.4
      • firePropertyChange

        public void firePropertyChange​(String propertyName,
                                       Object oldValue,
                                       Object newValue)
        登録されているリスナーにバウンド・プロパティの更新を報告して、すべてのプロパティまたは指定された名前を持つプロパティの更新を追跡します。

        古い値と新しい値が等しく、nullでない場合、イベントはトリガーされません。

        これは、より一般的なfirePropertyChange(PropertyChangeEvent)メソッドの簡易ラッパーにすぎません。

        パラメータ:
        propertyName - 変更されたプロパティのプログラム名
        oldValue - プロパティの古い値
        newValue - プロパティの新しい値
      • firePropertyChange

        public void firePropertyChange​(String propertyName,
                                       int oldValue,
                                       int newValue)
        登録されているリスナーに整数型のバウンド・プロパティの更新を報告して、すべてのプロパティまたは指定された名前を持つプロパティの更新を追跡します。

        古い値と新しい値が等しい場合、イベントはトリガーされません。

        これは、より一般的なfirePropertyChange(String, Object, Object)メソッドの簡易ラッパーにすぎません。

        パラメータ:
        propertyName - 変更されたプロパティのプログラム名
        oldValue - プロパティの古い値
        newValue - プロパティの新しい値
        導入されたバージョン:
        1.2
      • firePropertyChange

        public void firePropertyChange​(String propertyName,
                                       boolean oldValue,
                                       boolean newValue)
        登録されているリスナーにboolean型のバウンド・プロパティの更新を報告して、すべてのプロパティまたは指定された名前を持つプロパティの更新を追跡します。

        古い値と新しい値が等しい場合、イベントはトリガーされません。

        これは、より一般的なfirePropertyChange(String, Object, Object)メソッドの簡易ラッパーにすぎません。

        パラメータ:
        propertyName - 変更されたプロパティのプログラム名
        oldValue - プロパティの古い値
        newValue - プロパティの新しい値
        導入されたバージョン:
        1.2
      • firePropertyChange

        public void firePropertyChange​(PropertyChangeEvent event)
        登録されているリスナーにプロパティ変更イベントをトリガーして、すべてのプロパティまたは指定された名前を持つプロパティの更新を追跡します。

        指定されたイベントの以前の値と新しい値が等しくてnullでない場合、イベントはトリガーされません。

        パラメータ:
        event - トリガーされるPropertyChangeEvent
        導入されたバージョン:
        1.2
      • fireIndexedPropertyChange

        public void fireIndexedPropertyChange​(String propertyName,
                                              int index,
                                              Object oldValue,
                                              Object newValue)
        登録されているリスナーにインデックス付きバウンド・プロパティの更新を報告して、すべてのプロパティまたは指定された名前を持つプロパティの更新を追跡します。

        古い値と新しい値が等しく、nullでない場合、イベントはトリガーされません。

        これは、より一般的なfirePropertyChange(PropertyChangeEvent)メソッドの簡易ラッパーにすぎません。

        パラメータ:
        propertyName - 変更されたプロパティのプログラム名
        index - 変更されたプロパティ要素のインデックス
        oldValue - プロパティの古い値
        newValue - プロパティの新しい値
        導入されたバージョン:
        1.5
      • fireIndexedPropertyChange

        public void fireIndexedPropertyChange​(String propertyName,
                                              int index,
                                              int oldValue,
                                              int newValue)
        登録されているリスナーに整数型のインデックス付きバウンド・プロパティの更新を報告して、すべてのプロパティまたは指定された名前を持つプロパティの更新を追跡します。

        古い値と新しい値が等しい場合、イベントはトリガーされません。

        これは、より一般的なfireIndexedPropertyChange(String, int, Object, Object)メソッドの簡易ラッパーにすぎません。

        パラメータ:
        propertyName - 変更されたプロパティのプログラム名
        index - 変更されたプロパティ要素のインデックス
        oldValue - プロパティの古い値
        newValue - プロパティの新しい値
        導入されたバージョン:
        1.5
      • fireIndexedPropertyChange

        public void fireIndexedPropertyChange​(String propertyName,
                                              int index,
                                              boolean oldValue,
                                              boolean newValue)
        登録されているリスナーにboolean型のインデックス付きバウンド・プロパティの更新を報告して、すべてのプロパティまたは指定された名前を持つプロパティの更新を追跡します。

        古い値と新しい値が等しい場合、イベントはトリガーされません。

        これは、より一般的なfireIndexedPropertyChange(String, int, Object, Object)メソッドの簡易ラッパーにすぎません。

        パラメータ:
        propertyName - 変更されたプロパティのプログラム名
        index - 変更されたプロパティ要素のインデックス
        oldValue - プロパティの古い値
        newValue - プロパティの新しい値
        導入されたバージョン:
        1.5
      • hasListeners

        public boolean hasListeners​(String propertyName)
        特定のプロパティにリスナーがあるかどうかを判定します。あらゆるプロパティに登録されたリスナーが含まれます。 propertyNameがnullの場合は、すべてのプロパティに登録されているリスナーのみがチェックされます。
        パラメータ:
        propertyName - プロパティ名。
        戻り値:
        指定したプロパティに1つ以上のリスナーがある場合はtrue
        導入されたバージョン:
        1.2