2017-08-15 39 views
1

我有一些行和列的vaadin表。如何让单元格可以在1列中单击?如何使vaadin表单元格单击监听器

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

我没有发布任何代码,因为我拥有的只是表(它不会帮助任何人)。

+0

至极版本您使用的? – Shirkam

+0

我正在使用vaadin 7.7.10 – user1631306

+0

你可以使用这里说的话https://github.com/vaadin/vaadin-grid/issues/407他们告诉单元格本身不能被点击,但是你可以在里面添加一个组件他们就是解决你的问题。 – Shirkam

回答

1

目前不可能有clickListener附加到Grid中的特定单元,如在此discussion上所述。他们告诉说单元只是数据的表示,而不是元素,所以它们不能被点击。

除此之外,您可以在单元格内添加组件,如插件LabelButtongithub)或只需添加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); 

这个的替代方法将使用像GeneratedPropertyContainer这样的属性生成器,并使用像ComponentRendererhere)这样的插件来渲染按钮。在其它我的答案的例子here ..

Vaadin 8.1

Vaadin 8.1现在有一个内置的ComponentRendererGrid使用。请参阅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文档Vaadin的in Vaadin page