JavaFX ListView中的图像

问题描述:

无论如何要将图像添加到JavaFX ListView?JavaFX ListView中的图像

这是我目前如何设置列表视图项目。

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

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

执行显示图像的ListCell并在ListView上设置cellFactorystandard 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(...)

+0

谢谢,我相当新的JavaFX,我一直在努力工作,如何细胞工厂工作。 此代码完美地工作:D – Ricktza 2014-08-29 16:20:50

记得刷新或加载您的列表视图 与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 
    }