2017-01-17 2 views
1

Wenn ich zwei Eigenschaften in JavaFx bidirektional binde, die mit verschiedenen Werten beginnen, die genommen werden?Welcher Wert wird verwendet, wenn zwei Eigenschaften mit unterschiedlichen Werten bidirektional verknüpft werden?

ObjectProperty<MyType> property1 = new SimpleObjectProperty(value1); 
ObjectProperty<MyType> property2 = new SimpleObjectProperty(value2); 
property1.bindBidirectional(property2); 
// will both properties be set to value1 or to value2? 

In meinen Tests (etwas anderes Setup), scheint property2 auf den Wert von property1 eingestellt werden. Aber ist das ein Zufall oder ist das Verhalten, auf das ich mich verlassen kann? Ich habe in der API nichts dazu gefunden.

Weil ich nicht sicher sein kann, ich zur Zeit das folgende Muster verwenden, aber dies scheint überflüssig zu mir:

ObjectProperty<MyType> property1 = new SimpleObjectProperty(value1); 
ObjectProperty<MyType> property2 = new SimpleObjectProperty(value2); 
property1.setValue(property2.getValue()); 
property1.bindBidirectional(property2); 
+0

Warum sie nicht geben den gleichen Anfangswert? – Bohemian

+0

@Bohemian In realistischen Situationen sind diese nicht nebeneinander. Aber es gibt einen führenden Wert in meinem Modell, in dem ein Standardwert festgelegt ist. Dann werden die Steuerelemente an diesen Standardwert gebunden (z. B. der ausgewählte Wert einer Auswahlbox). – Thirler

Antwort

0

Das javadoc nicht Verhalten angegeben ist, so was Tests und Entdeckungen machen Sie sollte nicht sein Verlass sich darauf, weil die nächste Version von Java die Implementierung ändern könnte.

Anstatt sich auf undokumentiertes Verhalten zu verlassen, Code so die interne Implementierung spielt keine Rolle.

Zum Beispiel geben die beiden Eigenschaften den gleichen Wert:

ObjectProperty<MyType> property1 = new SimpleObjectProperty(value1); 
ObjectProperty<MyType> property2 = new SimpleObjectProperty(value1); 
property1.bindBidirectional(property2); 
Verwandte Themen