当任何一个
xProperty
或
widthProperty
是无效的(因此绑定到它的任何东西都知道要重新计算)。您可以通过拨打
bind
method
private DoubleBinding centerXBinding = new DoubleBinding() {
{
bind(xProperty(), widthProperty());
}
@Override
protected double computeValue() {
return getX() + getWidth() / 2;
}
};
注意,您也可以这样做
private DoubleBinding centerXBinding = xProperty().add(widthProperty().divide(2));
绑定到
x
和
width
显然,属性假设您正在通过更改其中一个或两个属性来移动矩形。如果您通过其他方式移动矩形(例如,通过更改其
translateX
translateY
boundsInParentProperty
相反:
private DoubleBinding centerXBinding = new DoubleBinding() {
{
bind(boundsInParentProperty());
}
@Override
protected double computeValue() {
Bounds bounds = getBoundsInParent();
return (bounds.getMinX() + bounds.getMaxX()) / 2 ;
}
}
此绑定将提供父坐标系(通常是您想要的坐标系)中矩形中心的x坐标。