我想显示我的布尔值作为一个vaadin网格中的复选框。我无法使用多选模式,因为我需要两列复选框。复选框外壳的列有一个标题,但复选框本身的外壳没有标题。有人有想法吗?如何在vaadin网格中显示复选框而不是布尔值?
4
A
回答
3
如果你只需要一个只读的复选框,这个工作对我来说:
grid.getColumn("columnId").setRenderer(new HtmlRenderer(), new BooleanConverter());
HtmlRenderer由Vaadin框架提供,且布尔转换器看起来是这样的:
public class BooleanConverter implements Converter<String, Boolean>
{
@Override
public Boolean convertToModel(String value, Class<? extends Boolean> targetType, Locale locale) throws ConversionException
{
return null;
}
@Override
public String convertToPresentation(Boolean value, Class<? extends String> targetType, Locale locale) throws ConversionException
{
return "<input type='checkbox' disabled='disabled'" + (value.booleanValue() ? " checked" : "") + " />";
}
@Override
public Class<Boolean> getModelType()
{
return Boolean.class;
}
@Override
public Class<String> getPresentationType()
{
return String.class;
}
}
这会给你是一个本地浏览器复选框,但是,不是一个Vaadin复选框。
0
您必须添加生成列的复选框
GeneratedPropertyContainer gpcontainer = new GeneratedPropertyContainer(container);
gpcontainer.addGeneratedProperty("columnName",
new PropertyValueGenerator<CheckBox>() {
@Override
public CheckBox getValue(Item item, Object itemId,
Object propertyId) {
// set checkBox listener etc. in here
return new CheckBox();
}
@Override
public Class<CheckBox> getType() {
return CheckBox.class;
}
});
Grid grid = new Grid(gpcontainer);
你可以找到更多详细的例子在这里 “GeneratedPropertyContainer”
https://vaadin.com/docs/-/part/framework/datamodel/datamodel-container.html#datamodel.container.gpc
编辑: 还要设置`ComponentRenderer”为您的列
mainGrid.addColumn(COLUMN).setRenderer(new ComponentRenderer())
3
我建议使用这个回购https://github.com/vaadin/grid-renderers-collection-addon。该项目由Vaadin开发人员开发,它提供了CheckboxRenderer类。你可以在演示中看到它,但使用它非常简单。
首先,您必须将存储库和依赖项添加到您的项目中。在行家它看起来像这样:
...
<repositories>
...
<repository>
<id>vaadin-addons</id>
<url>http://maven.vaadin.com/vaadin-addons</url>
</repository>
</repositories>
...
<dependencies>
...
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>grid-renderers-collection-addon</artifactId>
<version>0.94</version>
</dependency>
</dependencies>
...
然后你可以使用它像这样:
grid.getColumn(columnName).setRenderer(new CheckboxRenderer());
您还可以轻松添加监听器:
CheckboxRenderer renderer = new CheckboxRenderer();
grid.getColumn(columnName).setRenderer(renderer);
grid.getColumn(columnName).setHeaderCaption("");
renderer.addClickListener(e -> System.out.println("Hello listener!"));
相关问题
- 1. yii2:显示标签而不是布尔值复选框的值
- 2. 在Vaadin 8中,如何将布尔转换为网格中的复选框
- 3. yui get复选框返回数组而不是布尔值
- 4. 复选框非布尔值?
- 5. 显示复选框而不是图像
- 6. Vaadin网格布局边框
- 7. radgridview布尔列作为文本框而不是复选框
- 8. flex 3数据网格:隐藏值,如果== 0并在布尔值上显示复选框
- 9. 如果未选中复选框,则不显示复选框值
- 10. 复选框值不显示
- 11. 复选框不显示值
- 12. 从SQL Server显示布尔值作为复选框
- 13. 绑定布尔值在Vaadin
- 14. ColdFusion中的布尔值复选框
- 15. 复选框布尔
- 16. 在DevXpress网格中显示是或否的布尔列
- 17. Vaadin网格:如何删除标题中的选择/取消选择复选框?
- 18. 如何在.erb模板中显示存储在db(它的布尔值 - 真/假)中的值作为复选框?
- 19. 如何从SQL调用复选框值显示在表格vb.net
- 20. 通过复选框传递布尔值
- 21. 复选框绑定到布尔值twoway
- 22. 更改Html.DisplayFor布尔值复选框MVC
- 23. 如果复选框的值已经在mysql中,如何显示复选框?
- 24. 如何在网格中显示与所选复选框相关的数据
- 25. 如何显示在列式数据而不是在网格
- 26. 显示一个复选框列表而不是多个选择
- 27. 显示复选框而不是表格单元格内的图像
- 28. 是否可以在jsp页面上的复选框或单选按钮中显示布尔值?
- 29. 显示复选框值
- 30. Vaadin复选框onValueChange
谢谢,但我还需要检查和取消选中框 – spaethju
@spaethju下面我把答案满足您的要求。 – Piotrowy