Java 作为一个可观察的次左旋值的两个可观察的次左旋值的最大值
给定Java 作为一个可观察的次左旋值的两个可观察的次左旋值的最大值,java,data-binding,javafx,javafx-8,Java,Data Binding,Javafx,Javafx 8,给定可观察到的超高值a和可观察到的超高值b,我可以这样得到它们的最大值: NumberBinding m = Bindings.max(a,b); 将其作为双重绑定(甚至只是一个可观察到的超高值)而不是数字绑定,最简单的方法是什么?您可以创建自己的绑定: DoubleProperty a = ... DoubleProperty b = ... DoubleBinding maxBinding= new DoubleBinding() { { super.bind
可观察到的超高值a
和可观察到的超高值b
,我可以这样得到它们的最大值:
NumberBinding m = Bindings.max(a,b);
将其作为
双重绑定
(甚至只是一个可观察到的超高值
)而不是数字绑定
,最简单的方法是什么?您可以创建自己的绑定:
DoubleProperty a = ...
DoubleProperty b = ...
DoubleBinding maxBinding= new DoubleBinding() {
{
super.bind(a, b);
}
@Override
protected double computeValue() {
return Math.max(a.doubleValue(), b.doubleValue());
}
@Override
public void dispose() {
super.unbind(a, b);
}
};
另请参见的JavaDoc。您可以创建自己的绑定:
DoubleProperty a = ...
DoubleProperty b = ...
DoubleBinding maxBinding= new DoubleBinding() {
{
super.bind(a, b);
}
@Override
protected double computeValue() {
return Math.max(a.doubleValue(), b.doubleValue());
}
@Override
public void dispose() {
super.unbind(a, b);
}
};
另请参见的JavaDoc。
Bindings.max
将在调用它时返回一个DoubleBinding
实例,其中一个参数是observedOutleValue
因此,如果您确定在这种情况下是正确的,那么您可以将结果强制转换为双绑定
DoubleBinding max = (DoubleBinding) Bindings.max(a,b);
更具体地说,返回的NumberBinding
是:
如果其中一个参数是一个DoubleBinding
可观察到的次左值
- else
如果其中一个参数是FloatBinding
observeFloatValue
- else
如果其中一个参数是LongBinding
ObservableLongValue
- else
整数绑定
- 如果其中一个操作数是double,则结果是double
- 如果不是,并且其中一个操作数是浮点,则结果是浮点
- 如果不是,并且其中一个操作数是长的,则结果是长的
- 否则,结果为整数
Bindings.max
在调用它时,其中一个参数是observedOutleValue
,它将返回一个DoubleBinding
的实例
因此,如果您确定在这种情况下是正确的,那么您可以将结果强制转换为双绑定
DoubleBinding max = (DoubleBinding) Bindings.max(a,b);
更具体地说,返回的NumberBinding
是:
如果其中一个参数是一个DoubleBinding
可观察到的次左值
- else
如果其中一个参数是FloatBinding
observeFloatValue
- else
如果其中一个参数是LongBinding
ObservableLongValue
- else
整数绑定
- 如果其中一个操作数是double,则结果是double
- 如果不是,并且其中一个操作数是浮点,则结果是浮点
- 如果不是,并且其中一个操作数是长的,则结果是长的
- 否则,结果为整数