我正在尝试将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。 我做错了什么?
答案 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);
}