ben*_*rre 3 vaadin vaadin-grid vaadin8
我有以下代码,它应该显示一个可点击的图标,该图标打开一个弹出对话框,读出冗长的笔记。
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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
问题是代码不响应点击实际图像,只响应外部。你可以在下面看到这一点。知道是否可以使图像可点击吗?
您还需要向 中添加一个点击侦听器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 ...
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到一个工作示例:https : //github.com/alejandro-du/community-answers/tree/master/click-image-in-grid
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |