2016-07-23 9 views
1

arbeitet Ich versuche, die textProperty der Label auf das Objekt des SimpleIntegerProperty mit Hilfe von Bindings zu binden, aber nicht den Text ändern, wenn ich die SimpleIntegerProperty des Objekts in Echtzeit ändern. Jede Hilfe würde geschätzt werden, wie man textProperty ändern kann.javafx Bindings.createStringBinding aber nicht bindend eigentlich

package sample; 

import javafx.beans.binding.Bindings; 
import javafx.beans.property.SimpleIntegerProperty; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.Label; 
import javafx.scene.control.Slider; 

import java.net.URL; 
import java.util.ResourceBundle; 

public class Controller implements Initializable 
{ 

    @FXML 
    private Slider slider; 

    @FXML 
    private Label label; 

    @Override 
    public void initialize(URL location, ResourceBundle resources) { 

     MyObject object = new MyObject(0); 

     label.textProperty().bind(Bindings.createStringBinding(() -> " hello " + object.numberProperty().get() * (10 + 12)/2)); 

     object.numberProperty().bind(slider.valueProperty()); 

    } 
} 


class MyObject { 

    private SimpleIntegerProperty number; 

    public Object(int number){ 
     this.number = new SimpleIntegerProperty(number); 
    } 

    public SimpleIntegerProperty numberProperty(){return this.number;} 
}  

Antwort

2

Sie müssen "sagen" Bindings, die Observable s für Änderungen zu beobachten. Dieser Varargs-Parameter ist der zweite Parameter der createStringBinding-Methode. In diesem Fall müssen Sie nur eine einzige Observable: object.numberProperty()

label.textProperty().bind(
    Bindings.createStringBinding(
    () -> " hello " + object.numberProperty().get() * (10 + 12)/2, 
     object.numberProperty())); 
übergeben
Verwandte Themen