2016-03-25 9 views
1

ich folgende Methode haben:JavaFX simpleFloatProperty hinaus nicht funktioniert

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

auf eine Klasse mit einer Eigenschaft:

private SimpleFloatProperty balance; 

Durch den Aufruf:

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

Verfahren ausgeführt wird, aber Das Guthaben wird nicht gespeichert. Hast du irgendwelche Ideen, warum passiert das?

Antwort

2

Die Methode add on SimpleFloatProperty ändert den Wert der Eigenschaft nicht, sie gibt eine neue NumberBinding mit dem summierten Wert zurück. Überprüfen Sie die JavaDoc auf NumberExpressionBase.

Eine Möglichkeit, dies zu umgehen, ist es, den Mehrwert auf der Eigenschaft zu setzen, anstatt sie zu und fügt hinzu:

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

Ich glaube nicht, dass Sie die Methoden richtig verwenden. Add gibt eine NumberBinding zurück, also speichert sie keinen aktualisierten Wert.

JavaDoc:

Hinzufügen von NumberExpressionBase

öffentliche NumberBinding add (ObservableNumberValue andere)

Beschreibung von Schnittstelle kopiert vererbt wird: NumberExpression Erstellt einen neuen NumberBinding, die die Summe dieser NumberExpression und andere berechnet ObservableNumberValue.

definiert durch: Fügen Sie in Schnittstelle

NumberExpressionParameters: andere - die zweite ObservableNumberValue

Returns: der neue NumberBinding

0

Sie SimpleFloatProperty.setValue stattdessen versucht haben?

public void setValue (Anzahl v)

Stellen Sie den Wert gewickelt

Sie müssten auf den vorherigen Wert aus dem Gleichgewicht abrufen, und fügen Sie den zusätzlichen Wert von Eingabe Ihrer Methode ist. Dann setValue auf die Summe.

Verwandte Themen