我在寻找答案时偶然发现this个问题。但它似乎不是我的案例的解决方案。
在我的viewcontroller中,我有以下内容:
public void setModel(CarcassonneModel model) {
this.model = model;
ivHoveringTile.imageProperty().bind(getImage(model.board.getActiveTile().getFilename()));
}
private ObjectProperty<Image> getImage(String filename) {
File file = new File("src/carcassonneapplicatie/resources/tiles/" + filename + ".png");
Image image = new Image(file.toURI().toString());
ObjectProperty<Image> imageProperty = new SimpleObjectProperty<>(image);
return imageProperty;
}
但是,当我使用动作事件更改模型中的文件名时,显示的图像不会改变。我有我的标签的其他绑定,它们似乎完美,除了这个。
答案 0 :(得分:2)
如果你这样做
someProperty.bind(someOtherProperty);
然后someProperty
会在调用someOtherProperty.set(...)
时自动更新。
在您的代码中someOtherProperty
是您在ObjectProperty<Image>
方法中创建的getImage()
。由于您甚至没有保留对此属性的引用,因此您无法在其上调用set(...)
。因此ivHoveringTile
中的图片永远不会更新。
您需要绑定到模型中的可观察对象,表示可能更改的实际值。