我有 vaadin 表,其中包含一些行和列。如何使 1 个特定列的单元格可单击?
目标:我想在单击该 1 特定列的单元格时显示工具提示,而不是鼠标悬停。该单元格包含文本作为标签。
我不会发布任何代码,因为我只有表格(这对任何人都没有帮助)。
最佳答案
目前不可能将 clickListener
附加到 Grid
中的特定单元格,如本 discussion 中所述。 。他们告诉我们,单元格只是数据的表示,而不是元素,因此无法单击它们。
相反,您可以在单元格内添加一个组件,例如插件 LabelButton
( github ),或者简单地添加一个 Button
并将其设置为无边框。
PD:作为奖励,我添加了在 Grid
中添加 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);
此方法的替代方法是使用像 GeneratePropertyContainer
这样的属性生成器,并使用像 ComponentRenderer
( here ) 这样的插件来渲染按钮。一个例子here在我的其他答案中..
Vaadin 8.1
Vaadin 8.1 现在有一个内置的 ComponentRenderer
,可在 Grid
中使用。请参阅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
关于java - 如何制作 vaadin 表格单元格点击监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45697291/