java - Vaadin - 使添加的项目可选择(和可编辑)

标签 java vaadin

我希望在通过单击添加按钮添加新添加的表项(又称行)后立即可以选择它。我的主要目的是使其既可选择又可编辑(但仅限该行,现在是整个表格)。

这是表格代码:

            public Table createTable(BeanContainer<Long, PS_SECTION> beans) {       
            table.setImmediate(true);
            table.setContainerDataSource(beans);
            table.setColumnHeader("PS_SECTION", "ID");
            table.setColumnHeader("NAME", "SECTION");
            table.setColumnHeader("VORDER","ORDER");

            table.addGeneratedColumn("ACTIVE", new Table.ColumnGenerator() {

                @Override
                public Object generateCell(final Table source, final Object itemId,
                        Object columnId) {              

            table.setTableFieldFactory(new DefaultFieldFactory() {

                @Override
                public Field<?> createField(Container container, final Object itemId, Object propertyId, Component uiContext) {

                        if (!itemId.equals(table.getValue())) {
                               return null;
                        }
                               Field<?> field = super.createField(container, itemId, propertyId, uiContext);
                               field.setBuffered(true);

                    return field;
                }
            });


            table.addValueChangeListener(new Property.ValueChangeListener() {           
                @Override
                public void valueChange(Property.ValueChangeEvent event) {              
                        if (table.getValue() != null) {                     
                            editButton.setVisible(true);
                        } 
                        else {
                            editButton.setVisible(false);
                        }           
                }
            });

            table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
                  @Override
                  public void itemClick(ItemClickEvent itemClickEvent) {
                        if (itemClickEvent.isDoubleClick() && !table.isEditable()) {
                          table.setValue(itemClickEvent.getItemId());
                          configureEditable(true);  
                        // THE FUNCTION THAT MAKES THE SELECTED ROW EDITABLE
                          editButton.setVisible(false);
                          addButton.setVisible(false);
                        }               
                  }
                });


      // ....SOME MORE TABLE ATTRIBUTES HERE....

            return table;
        }

上面的代码对于选定的行可以正常工作,但是如何使新添加的行直接被选中并可编辑?

addButton.addClickListener(new ClickListener() {            
        @Override
            public void buttonClick(ClickEvent event) {                                     
                addList();  //HERE THE ROW (AND THE BEAN) IS ADDED                  

            /**
             * What to put here?
             *
             */
                configureEditable(true);

            }
    });

最佳答案

Object itemId = createNewBean();//创建一个新的bean,返回一个可以设置为新项目id的唯一id。

table.addItem(itemId); //add this newly created item to the table
//set the column values here for this particular item
table.getItem(itemId).getProperty("column_name").setValue("column_value");
//similarly set values of other columns for this particular item

table.setValue(itemId); //this selects the just added row

希望对您有所帮助。

关于java - Vaadin - 使添加的项目可选择(和可编辑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41677962/

相关文章:

java - com.microsoft.sqlserver.jdbc.SQLServerDriver 类未找到异常(新)

Java...获取每组 13 的第一个数字

Java - 使用 Gson 库从 servlet 返回 JSON

java - Vaadin 嵌入SWF

java - Vaadin 7 和 org.vaadin.addon.customfield。包裹

java - 需要从 spring boot 2.0 中排除 spring-orm 模块并从 jar 文件中使用它的旧版本

java - 将图像保存到 Web 应用程序中的项目文件夹中

java - 无法启动本地 Vaadin 测试站点

java - 如何将 MainView 注册到另一个 View 触发的 ComponentEvent?

java - 在 Vaadin 7 中,将数据/参数传递给 BrowserWindowOpener 的新 UI 实例?