2016-05-19 3 views
0

Есть некоторые свойства в JavaFX как boundsInParentProperty(), который имеет тип Bounds. Этот класс имеет несколько компонентов, которые не наблюдаются.Как связать компонент составного свойства в JavaFX?

Итак, что, если я хочу привязываться к одному из них?

Например, для Bounds#getMinX()?

Есть ли у нас некоторые функции bind... для извлечения компонента свойства? Могу ли я быть уверенным, что слушатели будут уведомлены об изменениях отдельных компонентов?

ответ

2

Bindings.selectDouble может быть использован для создания этой привязки:

DoubleBinding minXBinding = Bindings.selectDouble(node.boundsInParentProperty(), "minX"); 

И могу ли я быть уверен, что слушатели будут уведомлены по отдельным компонентам изменить?

Да. Несмотря на то, что это не документировано, что Bounds неизменен, посмотрев на исходный код можно узнать, что:

  • свойства, такие как minX хранятся в полях с private доступа.
  • нет доступа на запись к этим полям, кроме конструктора.
  • геттеры для этих свойств - final.

Следовательно, Bounds является фактически незугим, и поэтому вы можете быть уверены, что значение свойства должно быть заменено, если границы меняются.

0

В случае boundsInParentProperty() вы можете использовать Bindings.createDoubleBinding.

DoubleBinding minXBinding = Bindings.createDoubleBinding(() -> boundsInParentProperty.get().getMinX(), boundsInParentProperty); 

DoubleProperty minX = new SimpleDoubleProperty(); 
minX.bind(minXBinding); 
Смежные вопросы