jul*_*eth 5 vaadin vaadin7 vaadin-grid
我试图将我的布尔值显示为vaadin网格中的复选框。我无法使用多选模式,因为我需要两列带有复选框。Checkboxes外壳程序的列具有标题,但是Checkboxes本身的外壳没有标题。有人有主意吗?
如果您只需要一个只读复选框,这对我有用:
grid.getColumn("columnId").setRenderer(new HtmlRenderer(), new BooleanConverter());
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个本机浏览器复选框,但不是 Vaadin 复选框。
我建议使用此仓库https://github.com/vaadin/grid-renderers-collection-addon。该项目由Vaadin开发人员开发,提供CheckboxRenderer类。您可以在演示中看到它,但是使用它非常简单。
首先,您必须在项目中添加存储库和依赖项。在Maven中,它看起来像这样:
...
<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>
...
Run Code Online (Sandbox Code Playgroud)
然后,您可以像这样使用它:
grid.getColumn(columnName).setRenderer(new CheckboxRenderer());
Run Code Online (Sandbox Code Playgroud)
您还可以轻松添加侦听器:
CheckboxRenderer renderer = new CheckboxRenderer();
grid.getColumn(columnName).setRenderer(renderer);
grid.getColumn(columnName).setHeaderCaption("");
renderer.addClickListener(e -> System.out.println("Hello listener!"));
Run Code Online (Sandbox Code Playgroud)
您必须为复选框添加生成的列
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);
Run Code Online (Sandbox Code Playgroud)
您可以在“GeneratePropertyContainer”部分找到更详细的示例
https://vaadin.com/docs/-/part/framework/datamodel/datamodel-container.html#datamodel.container.gpc
编辑:还为您的列设置“ComponentRenderer”
mainGrid.addColumn(COLUMN).setRenderer(new ComponentRenderer())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5705 次 |
| 最近记录: |