felix
felix

Reputation: 13

Imageview changes when Image changes

I would like to somehow attach imageview to another image and make it so that when this image changes the imageview changes too. I have a "home" controller with an avatar imageview

    user = ViewFactory.getInstance().getUser();

    if(user.getAvatar() != null) {
        imgPreview.setImage(user.getAvatar());
    }

and another "settings" controller which allows to change avatar

    ViewFactory.getInstance().getUser().setAvatar(new Image(avatar.getAbsolutePath()));

and I would like to make it so that when I change avatar in settings it also changes it in home, a kind of listener for home imageview that changes when the value in user.getAvatar() is changed, but i dont know how to archive it

Upvotes: 0

Views: 41

Answers (1)

jewelsea
jewelsea

Reputation: 159616

Make the avatar in your User model object an ObjectProperty<Image> (adding appropriate get/set and property accessors);

ObjectProperty<Image> avatar;

Bind the image property in the ImageView to it.

imageView.imageProperty().bind(user.avatarProperty());   

Then, when you set the avatar image property to a new value,

user.setAvatar(newImage);

the image displayed in the image view will also change.

Upvotes: 2

Related Questions