2016-04-27 12 views
0

JavaFXのノードのいずれかのプロパティ(または特定のグループのいずれかより優れているもの)が変更された場合に通知する方法はありますか?任意のプロパティが変更されたときのJavaFXの通知

ありがとうございます!

+0

これらのすべてに同じ無効化リスナーを追加しますか? – Itai

+2

これは目的のプロパティにバインドされたバインディングを作成することを含まないユースケースを見るのは難しいです。実際に何をしようとしていますか? –

+0

@sillyfly ありがとうございました。私は次のようにsillyflyのメソッドを試してみます: property1..addListener((ObservableValue <?extends Object> observable、Object oldValue、Object newValue) - > { // doSomething();}); property2..addListener((ObservableValue <?extends Object> observable、Object oldValue、Object newValue) - > { // doSomething();}); –

答えて

0

実は私も、あなたがこのような何かをしたい理由を知りませんが、あなたはすべてのプロパティのために自分自身を繰り返したくない場合は、あなたがこのような何か行うことができます:

ObservableList<Property<?>> propList = FXCollections.observableArrayList(); 

private void doSomething(Observable observable){ 
    System.out.println("Handled" + observable.toString()); 
} 

private void attachListener(Property<?> p){ 
    p.addListener(new InvalidationListener() { 

     @Override 
     public void invalidated(Observable observable) { 
      doSomething(observable); 

     } 
    }); 
} 

// In start, or whereever you want to add the properties 
propList.addListener(new ListChangeListener<Property<?>>(){ 

    @Override 
    public void onChanged(javafx.collections.ListChangeListener.Change<? extends Property<?>> change) { 
     while(change.next()){ 
      if(change.wasAdded()) 
       for(Property<?> item : change.getAddedSubList()){attachListener(item);} 
     } 
    } 

}); 

BooleanProperty a = new SimpleBooleanProperty(false); 
BooleanProperty b = new SimpleBooleanProperty(false); 
IntegerProperty c = new SimpleIntegerProperty(1); 

propList.addAll(a,b,c); 

a.set(true); 
a.set(false); 
b.set(true); 
c.set(2); 

を出力は次のとおりです。

HandledBooleanProperty [value: true] 
HandledBooleanProperty [value: false] 
HandledBooleanProperty [value: true] 
HandledIntegerProperty [value: 2] 

それは何:

あなたはObservableListにプロパティを追加し、リストに新しい要素を取得するときに、あなたのハンドラはとして取り付けられています。したがって、リスナーを1つずつ追加するのではなく、リストに要素を追加してプロパティセットを制御することができます。

+0

あなたはリスナーを添付しますが、決してそれらを切り離すことはできません... – fabian

関連する問題