📌  相关文章
📜  在选定的项目上更改了 listview javafx - Java (1)

📅  最后修改于: 2023-12-03 14:51:34.022000             🧑  作者: Mango

在选定的项目上更改了 ListView JavaFX

在 JavaFX 中,ListView 是一个可滚动的列表,用于在应用程序中呈现数据。在本文中,我们将讨论如何更改 ListView 中的项目。

更改项目的数据

每个 ListView 项目通常显示一个数据元素。要更改项目的数据,请更新 ListView 中的数据源。例如,如果您的 ListView 显示一个字符串列表,您可以通过以下方式更新其中一个项目的文本:

ListView<String> listView = new ListView<>();
ObservableList<String> items = FXCollections.observableArrayList(
    "Item 1", "Item 2", "Item 3"
);
listView.setItems(items);

// 更改列表中第二项的文本
items.set(1, "New Item 2");

此操作将将列表中的第二个项目文本从 "Item 2" 更改为 "New Item 2"。

更改项目的渲染

默认情况下,ListView 以 toString() 方法为基础来呈现项目。但是,您可以使用 cell factory 更改项目的渲染方式。

要使用默认的 CellFactory,只需在创建 ListView 时不指定 factory。要更改 factory,您需要创建一个新的工厂类,实现它创建 custom cell 的方法。例如,下面的代码将为其中一个 ListView 创建带有图像的 custom cell:

ListView<String> listView = new ListView<>();
ObservableList<String> items = FXCollections.observableArrayList(
    "Apple", "Banana", "Orange"
);
listView.setItems(items);

// 定义 cell factory
listView.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
    @Override
    public ListCell<String> call(ListView<String> param) {
        return new ListCell<String>() {
            @Override
            protected void updateItem(String item, boolean empty) {
                super.updateItem(item, empty);

                if (item != null) {
                    setText(item);

                    // 加载图像
                    Image image = new Image("path/to/image.png");
                    ImageView imageView = new ImageView(image);
                    setGraphic(imageView);
                } else {
                    setText(null);
                    setGraphic(null);
                }
            }
        };
    }
});

此操作将为所有项目创建一个 custom cell,其中包含一个文本标签和一个图像视图。

结论

ListView 是一个强大而方便的组件,可用于在 JavaFX 应用程序中呈现数据。通过更改项目的数据或 cell factory,您可以自定义项目的呈现方式。