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