【发布时间】:2016-10-24 02:14:09
【问题描述】:
我是 JavaFX 的新手,我需要绑定 Label 的可见属性,如果它表示的值达到 0,则 Label 应该是不可见的。此外,当有界integerProperty 值更改时,它需要更新。
这是我的代码:
@FXML
private Label kingRewardLabel;
// many other stuff between
IntegerProperty kingBonus = mainApp.getLocalModel().getMap().kingBonus();
kingBonus.addListener((observable, oldValue, newValue) -> {
if (newValue.equals(0)) {
kingRewardLabel.setVisible(false);
} else {
kingRewardLabel.setText(String.valueOf(newValue.intValue()));
}
});
// testing the listener
kingBonus.setValue(25);
我已经尝试调试了一下,但一切似乎都很好,没有错误,没有抛出异常,只是监听器不起作用,或者至少不像我预期的那样,因为Label 仍然显示默认文本“标签",而不是 "25"
【问题讨论】:
-
在我看来它应该可以工作。你确定这确实是同一个标签吗?在最后一行之后添加
kingRewardLabel.setText("Test")会发生什么? -
@sillyfly 我已经测试了它的监听器,它适用于 value !=0 但是当我 setValue(0) 时没有进入监听器,为什么会这样?
-
如果初始值为 0,则将其设置为 0 不会触发更改。如果设置为 0 以外的值,然后设置为 0,它是否有效?
-
@sillyfly 哦,是的,是的,它有效。我没想到 :)..