📅  最后修改于: 2023-12-03 14:51:34.022000             🧑  作者: Mango
在 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,您可以自定义项目的呈现方式。