有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java不使用提供给表的itemId。addItem()是否类似于Vaadin表UI组件中的列?

只是一个关于瓦丁桌子组件的问题。我使用TableFieldFactory创建了一个表,我注意到,如果我计算一个表(例如8行4列)调用TableFieldFactory的次数,结果是40次(而不是预期的8*4=32)

那么,Vaadin在创建表时是否使用隐藏的额外列?此列是否包含给定给表的itemId。addItem()方法?无论如何,以下是我用于现场工厂的代码:

// UI's static field
public static int counter = 1;

// ... UI's init() method
tbl.setTableFieldFactory(new TableFieldFactory() {

        @Override
        public Field<?> createField(Container container, Object itemId,
                                    Object propertyId, Component uiContext) {
            TextField field = new TextField((String) propertyId);

            counter++;

            // User can only edit the "Numeric field"
            if ("Numeric field".equals(propertyId)) {

                field.setData(itemId);

                // Remeber the field
                valueFields.put((Integer) itemId, field);

                // Focus if it is the first editable value
                if ((Integer) itemId == 0) {
                    field.focus();
                }
            }
            else {
                field.setReadOnly(true);
            }
            return field;
        }
    }); 
 // here counter is 40 for a 8x4 table 

共 (1) 个答案

  1. # 1 楼答案

    我想原因是vaadin表的延迟加载。我体验到,在第一次加载时,表是用一行初始化的(我想是为了更好地响应用户),然后用延迟加载量(在您的情况下是整个表)重新初始化,这将解释额外的8个调用