How to display checkboxes instead of boolean in vaadin grid?

I am trying to display my booleans as a checkbox in a vaadin grid. I cannot use multiple selection mode because I need two columns with checkboxes. The columns of the Checkboxes shell have Caption, but the Checkboxes shell itself is without a header. Does anyone have an idea?

+4
source share
3 answers

You must add the generated columns for your checkboxes.

    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);

A more detailed example can be found here in the GeneratedPropertyContainer section.

https://vaadin.com/docs/-/part/framework/datamodel/datamodel-container.html#datamodel.container.gpc

EDIT: Also set the `ComponentRenderer 'for the column

mainGrid.addColumn(COLUMN).setRenderer(new ComponentRenderer())
0

, :

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 CheckBox.

+3

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>
...

:

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!"));
+3

Source: https://habr.com/ru/post/1660064/


All Articles