我有一个用元素创建的GWT UI面板,我需要在UI中添加一个GWT树
我做了
TreeItem department = new TreeItem("Packages");
TreeItem salesDepartment = new TreeItem("Package1");
TreeItem marketingDepartment = new TreeItem("Package2");
TreeItem manufacturingDepartment = new TreeItem("Package3");
TreeItem employee1 = new TreeItem("Flight");
TreeItem employee2 = new TreeItem("Cruilse");
TreeItem employee3 = new TreeItem("Flight");
salesDepartment.addItem(employee1);
salesDepartment.addItem(employee2);
salesDepartment.addItem(employee3);
TreeItem employee4 = new TreeItem("Cruise");
TreeItem employee5 = new TreeItem("Hotel");
marketingDepartment.addItem(employee4);
marketingDepartment.addItem(employee5);
TreeItem employee6 = new TreeItem("Cruise");
TreeItem employee7 = new TreeItem("Hotel");
manufacturingDepartment.addItem(employee6);
manufacturingDepartment.addItem(employee7);
department.addItem(salesDepartment);
department.addItem(marketingDepartment);
department.addItem(manufacturingDepartment);
Tree tree = new Tree();
tree.addItem(department);
// consider that treeDiv is already added
private Element treeDiv = DOM.createDiv();
DOM.appendChild( treeDiv , tree.getElement() );
当我将树小部件添加为元素时,它只显示文本输入没有展开按钮或任何东西,它不作为树只作为文本。 请告诉我有没有解决这个问题。
答案 0 :(得分:1)
// consider that treeDiv is already added private Element treeDiv = DOM.createDiv(); DOM.appendChild( treeDiv , tree.getElement() );
当我将树小部件添加为元素时,它只显示文本输入没有展开按钮或任何东西,它不作为树只作为文本。请告诉我有没有解决这个问题。
我不确定该评论意味着什么,因为树刚刚创建,因此无法添加 ,但即使这是一个问题,我也不确定为什么我们必须直接使用树的元素。如果您正在跳过此问题的更多部分,请添加它们。例如:treeDiv
添加到了什么?
作为问题的直接答案,请勿这样做。相反,使用小部件自己的add方法,将小部件添加到其他小部件,而不是直接操作dom元素。
例如,如果要直接将树添加到<body>
,则看起来像这样:
RootPanel.get().add(tree);
或者,如果您已有父窗口小部件(此处称为panel
),只需将其直接添加到该父窗口:
panel.add(tree);
原因是Widget布线有自己的事件布线需要设置 - 为了避免在更糟糕的浏览器中发生内存泄漏,确保在窗口小部件取消时删除事件布线非常重要这页纸。有关更多详细信息,请参阅http://www.gwtproject.org/articles/dom_events_memory_leaks_and_you.html,但简短版本是在将小部件的dom元素实际添加到更大的dom之后,必须调用小部件的onAttach,并且任何子小部件也必须也调用它们的onAttach。将小部件添加到另一个小部件时会自动完成 - 您应该坚持使用该API。