【问题标题】:Image in JavaFX ListViewJavaFX ListView 中的图像
【发布时间】:2023-03-17 11:00:01
【问题描述】:

是否可以将图像添加到 JavaFX ListView?

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

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

我还使用列表视图值作为 id 来了解选择了哪个。

【问题讨论】:

    标签: java javafx


    【解决方案1】:

    实现一个显示图像的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(...) 时都创建它们。

    【讨论】:

    • 谢谢,我对 JavaFX 还很陌生,我一直在努力弄清楚细胞工厂是如何工作的。这段代码完美无缺:D
    【解决方案2】:

    记得刷新或加载你的 Listview 与 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
        }
    

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多