在javaFX中将int绑定到Label

时间:2016-06-17 07:57:11

标签: javafx binding

我正在尝试将int对象绑定到javaFX中的Label,我不想将模型中的类型更改为IntegerProperty。我试过

mainActionLabel.setText(myintvar);

mainActionLabel.textProperty().bind(new SimpleIntegerProperty(myintvar.asString());

但是只有当我关闭并再次打开gui时,值才会更新,所以我想绑定不是真的正在工作,因为我想它用setText方法更新。

有没有其他方法可以正确绑定它?

编辑:我刚尝试删除

mainActionLabel.setText(myintvar);

行,但问题仍然存在:正确初始化,但不实时更新。只有当我关闭窗口并重新打开它时。

2 个答案:

答案 0 :(得分:5)

IntegerProperty使用asString

IntegerProperty property = new SimpleIntegerProperty();
Button btn = new Button("increment");
btn.setOnAction((ActionEvent event) -> {
    property.set(property.get()+1);
});
Label label = new Label();

label.textProperty().bind(property.asString());

答案 1 :(得分:1)

如果您不愿意将模型数据更改为IntegerProperty,则无法利用属性绑定。

您必须使用listeners以及模型的getter和setter自行实现同步。