2016-03-25 5 views
1

私は方法次ています呼び出すことによりJavaFXのsimpleFloatProperty加算doesntの仕事

private SimpleFloatProperty balance; 

:プロパティを持つクラス上の

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

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

メソッドが実行されていますが、天びんは保管されません。それがなぜ起こっているのかあなたは何か考えがありますか?

答えて

2

SimpleFloatPropertyのaddメソッドは、プロパティの値を変更しない場合は、それを合計値で新しいNumberBindingを作成し返します。 はNumberExpressionBaseにJavaDocをチェックしてください。この問題を回避するために

一つの方法は、それを追加するのではなく、財産上の付加価値を設定することです:

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

私はあなたが正しくメソッドを使用しているとは思いません。返しますNumberBindingを追加 - それは、更新された値を格納していません。

JavaDoc:

追加は

公共NumberBindingは(他のObservableNumberValue)インターフェースからコピーされ

説明追加NumberExpressionBase

から継承されます。NumberExpressionこのNumberExpressionの合計を計算し、新たなNumberBindingを作成し、別のObservableNumberValue。新しいNumberBinding

0

あなたの代わりにSimpleFloatProperty.setValueを試してみました:? - :インタフェースに追加

NumberExpressionParameters:二 ObservableNumberValue

戻り値は、他で指定

ます。public void setValueの(番号v)

設定します包まれた値

あなたはバランスの前の値を取得し、あなたの方法の入力から付加価値を追加する必要があります。そして、合計でsetValue

関連する問題