javafx Bindings.createStringBinding 但绑定实际上不起作用

ori*_*ncs 3 binding javafx

我想绑定textPropertyLabel对象的SimpleIntegerProperty有帮助的Bindings,但是当我改变它不会改变文本 SimpleIntegerProperty对象的实时。任何有关如何进行textProperty更改的帮助将不胜感激。

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;}
}    
Run Code Online (Sandbox Code Playgroud)

fab*_*ian 5

您需要“告诉” BindingsObservable要观察哪些变化。这个可变参数是方法的第二个参数createStringBinding。在这种情况下,您只需要传递一个Observableobject.numberProperty()

label.textProperty().bind(
   Bindings.createStringBinding(
      () -> " hello " + object.numberProperty().get() * (10 + 12)/2,
      object.numberProperty()));
Run Code Online (Sandbox Code Playgroud)