Gwt 将列表子编辑器添加到选项卡面板

Gwt 将列表子编辑器添加到选项卡面板,gwt,gwt2,gwt-editors,Gwt,Gwt2,Gwt Editors,我使用ListEditor来编辑儿童列表,我做的一切都和我在一些示例中看到的一样。与示例的唯一区别是,我希望编辑儿童的小部件作为选项卡添加到一些TabLayoutPanel中 问题是,我想给这个新选项卡提供一个标题,这个标题不是常量,而是取决于新创建的子编辑器正在编辑的对象,所以让标题为child.getName,我在EditorSourcecreate方法中不知道 如何将依赖于值的标题设置为由create创建的选项卡?非常感谢您提供的任何帮助/解决方法。此方法是否适用于您: public cl

我使用ListEditor来编辑儿童列表,我做的一切都和我在一些示例中看到的一样。与示例的唯一区别是,我希望编辑儿童的小部件作为选项卡添加到一些TabLayoutPanel中

问题是,我想给这个新选项卡提供一个标题,这个标题不是常量,而是取决于新创建的子编辑器正在编辑的对象,所以让标题为child.getName,我在EditorSourcecreate方法中不知道


如何将依赖于值的标题设置为由create创建的选项卡?非常感谢您提供的任何帮助/解决方法。

此方法是否适用于您:

public class ChildrenEditor extends Composite implements
        IsEditor<ListEditor<Child, ChildInTabEditor>> {


    ListEditor<Child, ChildInTabEditor> editor;

    public ChildrenEditor() {
        initWidget(uiBinder.createAndBindUi(this));
        editor = ListEditor.of(new ChildInTabEditorSource());
    }


    private class ChildInTabEditorSource extends EditorSource<ChildInTabEditor> {

            public ChildInTabEditor create(int index) {
                ChildInTabEditor tab = new ChildInTabEditor();
                // here's the trick :
                Child child = editor.getList().get(index);
                tabPanel.add(tab,child.getTabTitle());
                return tab;
            }

      }

    @Override
    public ListEditor<Child, ChildInTabEditor> asEditor() {
        return editor;
    }


}

ChildInTabEditor必须是一个实现编辑器的选项卡

对我有效的方法是将tabPanel和index传递给新创建的ChildPanel,并使其成为valueawareditor。然后在setValue上,我在给定索引的tabPanel reference上设置标题。

请看:。EditorSourcecreate的第一次调用似乎是在列表字段初始化之前完成的。因此,我在create.中尝试访问此列表时遇到NullPointerException。好的,那是我的错。你可以让ChildInTabEditor成为ValueAwareEditor,然后设置自己的标题?是的,我就是这么做的。可能没有更干净的方法。谢谢你的承诺!
public class ChildrenEditor extends Composite implements
        IsEditor<ListEditor<Child, ChildInTabEditor>> {


    ListEditor<Child, ChildInTabEditor> editor;

    public ChildrenEditor() {
        initWidget(uiBinder.createAndBindUi(this));
        editor = ListEditor.of(new ChildInTabEditorSource());
    }


    private class ChildInTabEditorSource extends EditorSource<ChildInTabEditor> {

            public ChildInTabEditor create(int index) {
                ChildInTabEditor tab = new ChildInTabEditor();
                // here's the trick :
                Child child = editor.getList().get(index);
                tabPanel.add(tab,child.getTabTitle());
                return tab;
            }

      }

    @Override
    public ListEditor<Child, ChildInTabEditor> asEditor() {
        return editor;
    }


}