Vaadin表行内联编辑

Ant*_*apa 4 java vaadin

我在vaadin中创建了一个表,我为表的每一行都有一个编辑按钮.我试过了

table.setEditable(true) 
Run Code Online (Sandbox Code Playgroud)

但这使整个表格可编辑.当我单击按钮编辑时,我只希望所选行可以编辑,如果可以自定义一些单元格示例复选框,下拉列表等任何建议?

Kra*_*ayo 7

这是一个非常简单的例子:

final Table table = new Table();
table.setEditable(true);
table.setTableFieldFactory(new TableFieldFactory() {
    private static final long serialVersionUID = 1L;

    @Override
    public Field<?> createField(Container container, Object itemId, Object propertyId, Component uiContext) {
        if (itemId == table.getData()) {
            return DefaultFieldFactory.get().createField(container, itemId, propertyId, uiContext);
        }
        return null;
    }
});
table.addGeneratedColumn("", new ColumnGenerator() {
    private static final long serialVersionUID = 1L;

    @Override
    public Object generateCell(Table source, final Object itemId, Object columnId) {
        Button button = new Button(itemId == table.getData() ? "Save" : "Edit");
        button.addClickListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                if (table.getData() == null) {
                    // edit
                    table.setData(itemId);
                    table.refreshRowCache();
                } else if (itemId == table.getData()) {
                    // save
                    table.setData(null);
                    // ...
                    table.refreshRowCache();
                }
            }
        });
        return button;
    }
});
// ...
Run Code Online (Sandbox Code Playgroud)