Java 有没有办法用Vaadin 8 grid在编辑模式下设置网格中的单元格

Java 有没有办法用Vaadin 8 grid在编辑模式下设置网格中的单元格,java,grid,vaadin,vaadin8,Java,Grid,Vaadin,Vaadin8,我使用Vaadin 8定义了这样的网格: ListDataProvider<Value> gridDataProvider = new ListDataProvider<>(new ArrayList<>()); GridSelectionModel<Value> selectionModel; Grid<Value> grid = new Grid<>(Value.c

我使用Vaadin 8定义了这样的网格:

    ListDataProvider<Value> gridDataProvider =
        new ListDataProvider<>(new ArrayList<>());
        GridSelectionModel<Value> selectionModel;
        Grid<Value> grid = new Grid<>(Value.class);
        TextField editorField = new TextField();
        editorField.setSizeFull();
        Binder<Value> binder = new Binder<>();
        binder.bind(editorField, Value::getValue, Value::setValue);
        Editor<Value> gridEditor = grid.getEditor();
        gridEditor.setBinder(binder);
        gridEditor.addSaveListener((EditorSaveListener<Value>) event -> {

            gridDataProvider.refreshAll();
        });
        gridEditor.setEnabled(true);
        grid.addColumn(Value::getValue).setEditorComponent(editorField, Value::setValue);
        grid.removeHeaderRow(0);
        selectionModel = grid.setSelectionMode(Grid.SelectionMode.MULTI);
        grid.setDataProvider(gridDataProvider);
        grid.setSizeFull();
我想做的是添加按钮,通过点击该按钮,一个新行应添加到网格中,新行中的唯一列应设置为编辑模式,以便用户可以直接写入新值。
可以这样做吗?

当前的Vaadin 8 API无法以编程方式打开编辑器。要添加当前打开的此功能,有两个问题:


最好不要在equals方法中使用Value.Value,因为这会导致一些网格功能出现问题,例如Grid.select(T项)

这段代码将允许用户使用箭头和输入键编辑最新项目

private void onButtonClick(Button.ClickEvent clickEvent) {
    Value newValue = new Value("New value");
    list.add(newValue);
    grid.getDataProvider().refreshAll();
    grid.focus();
}
隐藏编辑器后,网格将不会自动接收焦点。你需要帮瓦丁一点忙:

gridEditor.addSaveListener((EditorSaveListener<Value>) event -> {
    gridDataProvider.refreshAll();
    grid.focus();
});
gridEditor.addSaveListener((EditorSaveListener)事件->{
gridDataProvider.refreshAll();
grid.focus();
});
gridEditor.addSaveListener((EditorSaveListener<Value>) event -> {
    gridDataProvider.refreshAll();
    grid.focus();
});