我使用ListEditor
来编辑chilren列表,我就像在一些示例中看到的那样做。与示例的唯一区别是我希望将编辑子项的小部件作为选项卡添加到某些{{ 1}}。
问题是我想给这个新标签添加一个标题,这个标题不是常量,而是取决于新创建的子编辑器正在编辑的对象(所以让标题为TabLayoutPanel
)我不喜欢不知道里面的child.getName()
方法。
EditorSource#create()
如何将依赖于值的标头设置为ListEditor<ChildProxy, ChildPanel> children = ListEditor
.of(new EditorSource<ChildPanel>() {
@Override
public ChildPanel create(int index) {
ChildPanel tab = new ChildPanel();
//here's a problem, how I can get tabHeader here?
tabPanel.add(tab,tabHeader);
}
});
创建的标签?任何帮助/解决方法将不胜感激。
答案 0 :(得分:0)
这种方法是否适合您:
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
必须是同时实现Editor<Child>
的标签!
答案 1 :(得分:0)
对我有用的是将tabPanel
和index
传递给新创建的ChildPanel()
并将其设为ValueAwareEditor
。然后在setValue()
上,我在给定tabPanel
的{{1}}引用上设置标题。