grid - 在 vaadin 网格的一个单元格内显示多个组件

标签 grid vaadin7

有什么方法可以将多个组件(如复选框、标签等)显示到 Vaadin 网格的单个单元格吗?网格显示由 generatedPropertyContainer 动态填充的数据。

提前致谢。

最佳答案

如果您搜索Vaadin directory你会发现一些扩展名,例如 ComponentRenderer add-on它允许您以某种轻松的方式拥有这些功能。下面您可以看到基于上述附加组件的 Vaadin v7.7.3 和 v1.0.2 的代码示例。请记住更新并重新编译您的小部件集。

public class GridWithMultiComponentRenderer extends VerticalLayout {

    private static final String BUTTONS_ID = "buttons";

    public GridWithMultiComponentRenderer() {
        // basic grid setup
        Grid grid = new Grid(new BeanItemContainer<>(Person.class));
        grid.setSizeFull();
        addComponent(grid);

        // add the decorator
        ComponentGridDecorator<Person> gridDecorator = new ComponentGridDecorator<>(grid, Person.class);

        // generate the column which will display the components
        gridDecorator.addComponentColumn(BUTTONS_ID, person -> new HorizontalLayout(
                new Button("Get name", event -> Notification.show(person.getName())),
                new Button("Get surname", event -> Notification.show(person.getSurname())),
                new Button("Get age", event -> Notification.show(String.valueOf(person.getAge())))
        ));

        // set column order
        grid.setColumns("name", "surname", "age", BUTTONS_ID);

        // add some dummy data
        Random random = new Random();
        for (int i = 0; i < 10; i++) {
            gridDecorator.add(new Person("Name " + i, "Surname " + i, random.nextInt(99) + 1));
        }
    }

    // POJO for simple binding
    public static class Person {
        private String name;
        private String surname;
        private int age;

        public Person(String name, String surname, int age) {
            this.name = name;
            this.surname = surname;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getSurname() {
            return surname;
        }

        public void setSurname(String surname) {
            this.surname = surname;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}

结果:

multiple components in grid column

关于grid - 在 vaadin 网格的一个单元格内显示多个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39918302/

相关文章:

java - 如何等待窗口的退出事件?

java - 如何将具有过滤功能的嵌套复杂属性添加到 Vaadin 7 Grid?

java - 减少 Vaadin Charts 2 中图表内的空白

java - 验证代码是否在 Vaadin 7 应用程序的用户界面线程上运行

css - 使用带有自动调整和最小最大的重复(): is there a max-width for 1fr?

java - 我安装了 Vaadin eclipse 插件,但在新菜单和首选项中都看不到它

Wpf GridSplitter 替换 row.height 属性上的绑定(bind)

html - 列不对齐。 Bootstrap

javascript - 将 Kendo 网格数据发布到 MVC 中的 Controller

javascript - 基于自动图像检索系统生成自动链接(Freewall.js - 网格布局)