我有以下方法:
public void addTransaction(Float value){
balance.add(value);
}
在具有属性的类上:
private SimpleFloatProperty balance;
致电:
Obj.addTransaction(Float.parseFloat("-150"));
执行该方法,但不存储余额。你知道为什么会这样吗?
答案 0 :(得分:2)
SimpleFloatProperty
上的add方法不会更改属性的值,它返回会创建一个带有总计值的新NumberBinding。
查看NumberExpressionBase上的JavaDoc。
解决此问题的一种方法是在属性上设置添加值,而不是添加它:
public void addTransaction(Float value){
balance.setValue(value + balance.getValue());
}
答案 1 :(得分:1)
我不认为你正确使用这些方法。添加返回NumberBinding - 因此它不存储更新的值。
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
就总和而言。