JavaFX simpleFloatProperty添加不起作用

时间:2016-03-25 13:21:30

标签: javafx

我有以下方法:

public void addTransaction(Float value){
    balance.add(value);
}

在具有属性的类上:

private SimpleFloatProperty balance;

致电:

Obj.addTransaction(Float.parseFloat("-150"));

执行该方法,但不存储余额。你知道为什么会这样吗?

3 个答案:

答案 0 :(得分:2)

SimpleFloatProperty上的add方法不会更改属性的值,它返回会创建一个带有总计值的新NumberBinding。 查看NumberExpressionBase上的JavaDoc

解决此问题的一种方法是在属性上设置添加值,而不是添加它:

public void addTransaction(Float value){
    balance.setValue(value + balance.getValue());
}

答案 1 :(得分:1)

我不认为你正确使用这些方法。添加返回NumberBinding - 因此它不存储更新的值。

JavaDoc:

Add继承自NumberExpressionBase

  

public NumberBinding add(ObservableNumberValue other)

     

从接口复制的描述:NumberExpression创建一个新的NumberBinding,用于计算此NumberExpression和另一个ObservableNumberValue的总和。

     

指定者:在界面中添加

     

NumberExpressionParameters:other - 第二个   ObservableNumberValue

     

返回:新的NumberBinding

答案 2 :(得分:0)

您是否尝试过SimpleFloatProperty.setValue

  

public void setValue(Number v)

     

设置包装值

您必须检索余额的先前值,然后从方法的输入中添加其他值。然后setValue就总和而言。