Button Vaadin 7-将按钮作为generatedProperty添加到网格
我正在用beanItemContainer填充一个网格,我想为每一行中的不同功能和重定向添加几个按钮 到目前为止,我创建了一个BeanItemContainer,并用GeneratedPropertyContainer将其包装如下:Button Vaadin 7-将按钮作为generatedProperty添加到网格,button,grid,icons,vaadin7,renderer,Button,Grid,Icons,Vaadin7,Renderer,我正在用beanItemContainer填充一个网格,我想为每一行中的不同功能和重定向添加几个按钮 到目前为止,我创建了一个BeanItemContainer,并用GeneratedPropertyContainer将其包装如下: private BeanItemContainer<Foo> fooContainer = new BeanItemContainer<Foo>(Foo.class); private GeneratedPro
private BeanItemContainer<Foo> fooContainer = new BeanItemContainer<Foo>(Foo.class);
private GeneratedPropertyContainer wrapperContainer = new GeneratedPropertyContainer(fooContainer);
wrapperContainer.addGeneratedProperty("buttons", new PropertyValueGenerator<Button>()
{
@Override
public Button getValue(Item item, Object itemId, Object propertyId)
{
ClickListener fooBarClickListener = new ClickListener()
{
@Override
public void buttonClick(ClickEvent event)
{
// do something
}
};
Button button = new Button(FontAwesome.USER);
button.addClickListener(fooBarClickListener);
return button;
}
@Override
public Class<Button> getType()
{
return Button.class;
}
});
然而,这只是一个按钮,我需要多个按钮,除此之外,它甚至不起作用
它因以下错误而失败
Cannot remove converter, as renderer's presentation type java.lang.String and column's model com.vaadin.ui.Button type aren't directly compatible with each other (in Column[propertyId:buttons])
另外,对于我的用例来说,一个可点击的图标(最好是一个按钮)而不是按钮就足够了。将生成的属性添加到网格的模式如下
Grid grid = new Grid();
...
ButtonRenderer buttonRenderer = new ButtonRenderer();
... // add click listener etc
GeneratedPropertyContainer gpc = rowIndex.addGeneratedProperty("button1", container);
grid.setContainerDataSource(gpc);
grid.getColumn("button").setRenderer(buttonRenderer);
您将需要一个属性,即每个按钮一列。ButtonRenderer不知道如何在一列中渲染多个按钮
Vaadin目录中有一个附加组件,这是一个更高级的渲染器,专为希望在一列中紧凑地设置按钮的情况而设计,例如操作工具箱
我也非常喜欢这种类型用例的可选UX方法,在这种情况下,您希望在网格行上有一些东西来触发操作,也就是说。每行中的许多按钮会产生视觉混乱,占用原本可用于显示数据的空间,并降低网格渲染速度。因此,值得考虑将这些操作放在上下文菜单中
Grid grid = new Grid();
...
ButtonRenderer buttonRenderer = new ButtonRenderer();
... // add click listener etc
GeneratedPropertyContainer gpc = rowIndex.addGeneratedProperty("button1", container);
grid.setContainerDataSource(gpc);
grid.getColumn("button").setRenderer(buttonRenderer);