JavaFX绑定图像属性到图像(MVC)

时间:2015-12-01 22:01:06

标签: image model-view-controller javafx imageview

我在寻找答案时偶然发现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;
    }

但是,当我使用动作事件更改模型中的文件名时,显示的图像不会改变。我有我的标签的其他绑定,它们似乎完美,除了这个。

1 个答案:

答案 0 :(得分:2)

如果你这样做

someProperty.bind(someOtherProperty);

然后someProperty会在调用someOtherProperty.set(...)时自动更新。

在您的代码中someOtherProperty是您在ObjectProperty<Image>方法中创建的getImage()。由于您甚至没有保留对此属性的引用,因此您无法在其上调用set(...)。因此ivHoveringTile中的图片永远不会更新。

您需要绑定到模型中的可观察对象,表示可能更改的实际值。