JavaFX ListView中的图像
问题描述:
无论如何要将图像添加到JavaFX ListView?JavaFX ListView中的图像
这是我目前如何设置列表视图项目。
private ListView<String> friends;
private ObservableList<String> items;
items = FXCollections.observableArrayList(getFriends);
friends.setItems(items);
我也使用列表视图值作为id来知道哪个被选中。
答
执行显示图像的ListCell
并在ListView
上设置cellFactory
。 standard oracle tutorial有一个自定义列表单元实现的例子。
你会做大意如下的内容:
friends.setCellFactory(listView -> new ListCell<String>() {
private ImageView imageView = new ImageView();
@Override
public void updateItem(String friend, boolean empty) {
super.updateItem(friend, empty);
if (empty) {
setText(null);
setGraphic(null);
} else {
Image image = getImageForFriend(friend);
imageView.setImage(image);
setText(friend);
setGraphic(imageView);
}
}
});
的updateItem(...)
方法可以经常调用,因此它可能是更好的预载的图片,并将其提供给细胞,而不是创建它们每次调用updateItem(...)
。
答
记得刷新或加载您的列表视图 与myListViewWithPath.setItems(myObserverFilledWithImages);
@FXML
private void browseButton(ActionEvent event) throws Exception {
System.out.println("browseButton");
DirectoryChooser chooser = new DirectoryChooser();
File file = chooser.showDialog(myStage);
file = new File("E:\\FOLDER\\Imagen_File");
if (file != null) {
directoryField.setText(file.toString());
oImage.setAll(load(file.toPath()));
}
imageFilesList.setItems(oImage); //this one load or refresh the ListView
}
谢谢,我相当新的JavaFX,我一直在努力工作,如何细胞工厂工作。 此代码完美地工作:D – Ricktza 2014-08-29 16:20:50