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

クラスVetoableChangeSupport

  • すべての実装されたインタフェース:
    Serializable

    public class VetoableChangeSupport
    extends Object
    implements Serializable
    制約プロパティをサポートするBeanで使用できるユーティリティ・クラスです。 リスナーのリストを管理し、PropertyChangeEventをそれらにディスパッチします。 このクラスのインスタンスをBeanのメンバー・フィールドとして使用し、こうした種類の処理をそれに委譲できます。 VetoableChangeListenerは、すべてのプロパティまたは名前で指定されたプロパティに対して登録できます。

    次は、JavaBeans™仕様に記載されているルールと推奨事項に従ったVetoableChangeSupportの使用例です。

    
     public class MyBean {
         private final VetoableChangeSupport vcs = new VetoableChangeSupport(this);
    
         public void addVetoableChangeListener(VetoableChangeListener listener) {
             this.vcs.addVetoableChangeListener(listener);
         }
    
         public void removeVetoableChangeListener(VetoableChangeListener listener) {
             this.vcs.removeVetoableChangeListener(listener);
         }
    
         private String value;
    
         public String getValue() {
             return this.value;
         }
    
         public void setValue(String newValue) throws PropertyVetoException {
             String oldValue = this.value;
             this.vcs.fireVetoableChange("value", oldValue, newValue);
             this.value = newValue;
         }
    
         [...]
     }
     

    VetoableChangeSupportインスタンスはスレッドセーフです。

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

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

      • VetoableChangeSupport

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

      • addVetoableChangeListener

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

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

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

        指定されたプロパティによって追加されたリスナーがある場合、VetoableChangeListenerとVetoableChangeListenerProxyからなる配列が返されます。 リスナーの識別に関係している呼出し元メソッドは、個々の要素をテストしてVetoableChangeListenerProxyであるかどうかの確認、キャスト、パラメータの確認を行う必要があります。

        
         VetoableChangeListener[] listeners = bean.getVetoableChangeListeners();
         for (int i = 0; i < listeners.length; i++) {
                if (listeners[i] instanceof VetoableChangeListenerProxy) {
             VetoableChangeListenerProxy proxy =
                            (VetoableChangeListenerProxy)listeners[i];
             if (proxy.getPropertyName().equals("foo")) {
               // proxy is a VetoableChangeListener which was associated
               // with the property named "foo"
             }
           }
         }
         

        戻り値:
        追加されたすべてのVetoableChangeListeners、リスナーが追加されていない場合は空の配列
        導入されたバージョン:
        1.4
        関連項目:
        VetoableChangeListenerProxy
      • addVetoableChangeListener

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

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

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

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

        どのリスナーもPropertyVetoExceptionをスローして更新を拒否できます。 いずれかのリスナーが更新を拒否した場合、このメソッドは、この更新をすでに確定しているすべてのリスナーに、古い値に戻るundoPropertyChangeEventを新たに渡し、再度PropertyVetoExceptionをスローします。

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

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

        パラメータ:
        propertyName - 変更されるプロパティのプログラム名
        oldValue - プロパティの古い値
        newValue - プロパティの新しい値
        例外:
        PropertyVetoException - いずれかのリスナーがプロパティの更新を拒否した場合
      • fireVetoableChange

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

        どのリスナーもPropertyVetoExceptionをスローして更新を拒否できます。 いずれかのリスナーが更新を拒否した場合、このメソッドは、この更新をすでに確定しているすべてのリスナーに、古い値に戻るundoPropertyChangeEventを新たに渡し、再度PropertyVetoExceptionをスローします。

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

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

        パラメータ:
        propertyName - 変更されるプロパティのプログラム名
        oldValue - プロパティの古い値
        newValue - プロパティの新しい値
        例外:
        PropertyVetoException - いずれかのリスナーがプロパティの更新を拒否した場合
        導入されたバージョン:
        1.2
      • fireVetoableChange

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

        どのリスナーもPropertyVetoExceptionをスローして更新を拒否できます。 いずれかのリスナーが更新を拒否した場合、このメソッドは、この更新をすでに確定しているすべてのリスナーに、古い値に戻るundoPropertyChangeEventを新たに渡し、再度PropertyVetoExceptionをスローします。

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

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

        パラメータ:
        propertyName - 変更されるプロパティのプログラム名
        oldValue - プロパティの古い値
        newValue - プロパティの新しい値
        例外:
        PropertyVetoException - いずれかのリスナーがプロパティの更新を拒否した場合
        導入されたバージョン:
        1.2
      • fireVetoableChange

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

        どのリスナーもPropertyVetoExceptionをスローして更新を拒否できます。 いずれかのリスナーが更新を拒否した場合、このメソッドは、この更新をすでに確定しているすべてのリスナーに、古い値に戻るundoPropertyChangeEventを新たに渡し、再度PropertyVetoExceptionをスローします。

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

        パラメータ:
        event - トリガーされるPropertyChangeEvent
        例外:
        PropertyVetoException - いずれかのリスナーがプロパティの更新を拒否した場合
        導入されたバージョン:
        1.2
      • hasListeners

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