JavaFX:将属性绑定到标签不会更新

时间:2015-03-29 11:36:53

标签: java user-interface binding properties javafx

我正在尝试将IntegerProperty的值(我在getter中转换为StringProperty)绑定到javafx标签。但是,该值不会改变。

在我的班长:

private IntegerProperty totalMessaged;

在类的构造函数中:

this.totalMessaged = new SimpleIntegerProperty(0);

班上的吸气者:

public StringBinding getTotalMessaged() { 
    return this.totalMessaged.asString(); 
} 

在我用来增加属性的方法中:

this.totalMessaged.add(1);

在控制器类中:

@FXML
private void initialize() {
    this.sentLabel.textProperty().bind(ClientHandler.getInstance().getTotalMessaged());
}

当我启动程序时,标签将被设置为0,因此绑定首先似乎有效。但是,当它调用方法来增加属性时,属性不会增加1,它保持为0 - 标签不会更改,如果我在使用this.totalMessaged.add(1)后将值打印到控制台;它仍然会说这个属性是0。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

试试这种方式。使用converter将表单String转换为Integer。

在控制器中:

sentLabel.textProperty().bindBidirectional(ClientHandler.getInstance().totalMessagedProperty(), new NumberStringConverter());

模特:

private final IntegerProperty totalMessagedProp = new SimpleIntegerProperty(0);

public int getTotalMessaged() {
    return totalMessagedProp.get();
}

public IntegerProperty totalMessagedProperty() {
    return totalMessagedProp;
}

public void setTotalMessaged(int totalMessaged) {
    this.totalMessagedProp.set(totalMessaged);
}