gpt4 book ai didi

Vaadin Grid ItemClickListener 无法使用 ImageRenderer 注册对列的点击

转载 作者:行者123 更新时间:2023-12-01 12:16:38 25 4
gpt4 key购买 nike

我有以下代码,它应该显示一个可点击的图标,该图标会打开一个弹出对话框,读出一个冗长的注释。

        this.capacityCommentColumn = this.facilityGrid.addColumn(
p -> {
if (Strings.isNullOrEmpty(p.getCapacityComment())) {
return null;
} else {
return new ThemeResource("img/note.svg");
}
},
new ImageRenderer<>())
.setWidth(80)
.setCaption("Note");

this.facilityGrid.addItemClickListener(new ItemClickListener<MapQueryService.RowResult>() {
@Override
public void itemClick(Grid.ItemClick<MapQueryService.RowResult> event) {
if (event.getColumn() == capacityCommentColumn && !Strings.isNullOrEmpty(event.getItem().getCapacityComment())) {
final NoteWindow noteWindow = new NoteWindow();
noteWindow.txtDescription.setValue("test");
noteWindow.show();
}
}
});

问题是代码不响应对实际图像的点击,仅在外部。你可以在下面看到这个。知道是否可以使图像可点击吗?

enter image description here

最佳答案

您还需要向 Renderer 添加点击监听器。例如:

Grid<Integer> grid = new Grid();

private void addIconColumn() {
ImageRenderer<Integer> renderer = new ImageRenderer<>();
renderer.addClickListener(e -> iconClicked(e.getItem())); // allow clicks on the image

Grid.Column<Integer, ThemeResource> iconColumn = grid.addColumn(i -> new ThemeResource("img/icon.svg"), renderer)
.setCaption("Icon");

grid.addItemClickListener(e -> { // allow clicks on the cell
if (iconColumn.equals(e.getColumn())) {
iconClicked(e.getItem());
}
});
}

private void iconClicked(Integer i) {
... your UI logic here ...
}

您可以在此处查看工作示例:https://github.com/alejandro-du/community-answers/tree/master/click-image-in-grid

关于Vaadin Grid ItemClickListener 无法使用 ImageRenderer 注册对列的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47644283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com