JavaFX ListView中的图像

反正有没有将图像添加到JavaFX ListView?

这就是我当前设置列表视图项的方式。

private ListView friends; private ObservableList items; items = FXCollections.observableArrayList(getFriends); friends.setItems(items); 

我也使用列表视图值作为id来知道选择了哪个。

实现一个ListCell ,它显示图像并在ListView上设置一个cellFactory 。 标准的oracle教程有一个自定义列表单元格实现的示例。

您可以按以下方式执行操作:

 friends.setCellFactory(listView -> new ListCell() { 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)刷新或加载Listview ;

 @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 }