Java 具有绑定到属性的字符串或int
我需要在JavaFX中制作一个程序,在那里我需要管理一个电影库。我有一个由可观察列表填充的tableview。然后,我在属性和tableview旁边的文本框或标签之间进行了绑定。现在的问题是,我还有一些与电影相关的图片,比如电影海报。目前我只使用了一个硬编码的:Java 具有绑定到属性的字符串或int,java,javafx,javafx-8,Java,Javafx,Javafx 8,我需要在JavaFX中制作一个程序,在那里我需要管理一个电影库。我有一个由可观察列表填充的tableview。然后,我在属性和tableview旁边的文本框或标签之间进行了绑定。现在的问题是,我还有一些与电影相关的图片,比如电影海报。目前我只使用了一个硬编码的: imgPoster = new Image(getClass().getResourceAsStream("../resources/images/posters/" + 5 + ".jpg")); 在数据文件中,有一列具有电影的ID
imgPoster = new Image(getClass().getResourceAsStream("../resources/images/posters/" + 5 + ".jpg"));
在数据文件中,有一列具有电影的ID,相同的编号也是电影的图片。因此,我需要用一个绑定替换示例代码中的“5”,或者在我单击tableview中的一行时,它就会主动更改图片
我该怎么做
编辑:
在第一次评论之后,我这样做了:
imgOscars = new Image(getClass().getResourceAsStream("../resources/images/oscar/Oscar-logo.png"));
oscars = new ImageView(imgOscars);
oscars.setPreserveRatio(true);
oscars.setFitHeight(45);
但是问题仍然存在或者在表中的selected item属性中添加一个侦听器(我只是猜测您在表中使用的模型):
不可能。考虑<代码>图像< /代码>为此目的不可变。但是,您可以替换
图像视图中显示的图像
…我更改了它。。。但我现在怎么做呢?
TableView<Movie> table = ... ;
table.getSelectionModel().selectedItemProperty().addListener((obs, oldSelectedMovie, newSelectedMovie) -> {
if (newSelectedMovie == null) {
oscars.setImage(null);
} else {
// get image from new selection
Image image = new Image(getClass().getResourceAsStream("../resources/images/oscar/"+newSelectedMoviegetId()+".png"));
oscars.setImage(image);
}
});
oscars.imageProperty().bind(Bindings.createObjectBinding(() -> {
if (table.getSelectionModel().getSelectedItem() == null) {
return null ;
} else {
Movie selected = table.getSelectionModel().getSelectedItem();
return new Image(getClass().getResourceAsStream("../resources/images/oscar/"+selected.getId()+".png")); ;
},
table.getSelectionModel().selectedItemProperty());