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

标签 javafx binding

我正在尝试借助 BindingsLabeltextProperty 绑定(bind)到对象的 SimpleIntegerProperty但是当我实时更改对象的 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;}
}    

最佳答案

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

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

关于javafx Bindings.createStringBinding 但绑定(bind)实际上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38543273/

相关文章:

javascript - JavaFX WebView : can't get JS bridge to work in Java11+

java - 无法加载资源 Jar 文件

PHP MySQL 绑定(bind)语句情况

asp.net - 帮助: MySQL adapter.填充(数据集)错误

css - 如何设置ControlsFX Popover组件的高度和宽度

javafx - FXML 加载程序无法创建 javafx.scene.Cursor 的实例

wpf - 上下文菜单绑定(bind)到父窗口的 Datacontext

c# - 带有绑定(bind)列表和新行问题的数据 GridView

java - 为什么我不能在 Java NatTable 中使用特定的 CellEditor 实现 CellEditorMouseEventMatcher?

JavaFX 缩放至全屏