【发布时间】:2018-05-29 05:53:08
【问题描述】:
我想创建具有多个标签和图像的 listView 项目。我创建了一个单元类:
public class Cell extends ListCell<String> {
private HBox hBox;
private Label description;
private Pane pane;
private ImageView imageView;
private Image deleteImage;
private JFXButton delete;
public Cell() {
super();
this.hBox = new HBox();
this.description = new Label();
this.pane = new Pane();
this.delete = new JFXButton("delete");
this.hBox.getChildren().addAll(description, pane, delete);
HBox.setHgrow(pane, Priority.ALWAYS);
delete.setOnAction(event -> getListView().getItems().remove(getItem()));
}
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setText(null);
setGraphic(null);
if (item != null && !empty) {
description.setText(item);
setGraphic(hBox);
}
}
这是我的控制器代码的一部分:
void addToShopCart(ActionEvent event) {
Image partImage = selectedPart.getPicture();
shopListView.getItems().addAll(selectedPart.getDescription());
shopListView.setCellFactory(param -> new Cell(partImage));
}
selectedpart 我的自定义类有一个图像。 但现在我不知道如何将文本发送到这些标签,因为 updateItem() 方法只获取一个字符串。关于图像,我想分别为每个项目设置不同的图像。我试图发送给构造函数,但是所有图像都是相同的。我正在使用 MVC,我也可以使用代码。
【问题讨论】:
-
只有在发布我的答案后,我才注意到这个非常相似的问题:stackoverflow.com/questions/34838341/…。值得一看(并可能标记为重复)。