如何制作 vaadin table 单元格点击监听器

How to make vaadin table cell click listener

我有 vaadin table,里面有一些行和列。如何使 1 个特定列的单元格可点击?

目标:代替鼠标悬停,我想在单击该 1 个特定列的单元格时显示工具提示。该单元格包含作为标签的文本。

我没有发布任何代码,因为我只有 table(这对任何人都没有帮助)。

目前无法将 clickListener 附加到 Grid 中的特定单元格,如 discussion 中所述。他们说单元格只是数据的表示,而不是元素,所以不能点击。

相反,您可以在单元格内添加一个组件,例如插件 LabelButton (github),或者简单地添加一个 Button 并将其设置为无边框。

PD:作为奖励,我正在添加代码以在 Grid:[=49= 中添加 Button ]

Vaadin 7

RendererClickListener clickListener = new RendererClickListener() {
    private static final long serialVersionUID = 1L;

    @Override
    public void click(RendererClickEvent event) {
        //Do your actions
    }
};
ButtonRenderer renderer = new ButtonRenderer(ownerClickListener, "");
grid.getColumn("columnName").setRenderer(renderer);

这种方法的替代方法是使用像 GeneratedPropertyContainer 这样的 属性 生成器,并使用像 ComponentRenderer 这样的插件(here) to render buttons. An example here 在我的其他答案中..

Vaadin 8.1

Vaadin 8.1 现在有一个用于 Grid 的内置 ComponentRenderer。请参阅 What’s New,第一项,“网格中的组件”。

grid.addComponentColumn(person -> {
    Button button = new Button("Click me!");
    button.addClickListener(click ->
        Notification.show("Clicked: " + person.toString()));
    return button;
});
// make sure the buttons fit in the cells of the Grid
grid.setBodyRowHeight(40);

Grid 文档中所示的示例 in Vaadin page