/** copyRight 2010 huaguan
* All rights reserved
* Create on 2010-9-9 下午05:59:27
* by hemin Email:303645105@qq.com
*/
package com;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Tree;
import org.zkoss.zul.Treecell;
import org.zkoss.zul.Treechildren;
import org.zkoss.zul.Treeitem;
import org.zkoss.zul.Treerow;
public class AddChild extends GenericForwardComposer {
private static final long serialVersionUID = 7306934226849116514L;
// 前台树的id
private Tree tree;
// 输入框id
private Textbox cellName;
// 当前选择item
private Treeitem treeItemSelected;
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
}
// 点击添加子节点事件
public void onClick$add() {
String cellNameStr = cellName.getValue();
treeItemSelected = tree.getSelectedItem();
addItem(treeItemSelected, cellNameStr);
}
/**
* 在选择的节点下添加子节点
*
* @param treeitem
* 当前选择的节点
* @param Str
* 需要增加的节点名字
*/
private void addItem(Treeitem treeitem, String Str) {
Treecell treecell = new Treecell(Str);
Treerow treerow = new Treerow();
treecell.setParent(treerow);// tree cell只能在 tree row里面
if (treeitem.getTreerow() == null) {// 一个tree item只能有一个Tree
// row,item下无row时首先添加一个row
treeitem.appendChild(treerow);
} else if (treeitem.getTreechildren() == null) {// 一个tree
// item只能有一个可选的Tree
// children
Treechildren treechildren = new Treechildren();// 如果没有tree
// children那就添加tree
// children,并将treeitem添加到treechildren下
Treeitem treeitems = new Treeitem();
addItem(treeitems, Str);// 回调,将tree row 添加到tree item下
treechildren.appendChild(treeitems);// 将tree item添加到新增加的tree
// children下
treeitem.appendChild(treechildren);// 将tree item添加到tree children下
} else {// 一个Tree children下可有多个tree item,当节点下有tree children时,那就直接在tree
// children下添加tree item
Treeitem treeitems = new Treeitem();
addItem(treeitems, Str);// 回调,将tree row 添加到tree item下
treeitem.getTreechildren().appendChild(treeitems);// 将tree item 添加到
// 选择item 下的tree
// children下
}
}
/**
* 点击添加0层节点
*/
public void onClick$addRoot() {
String cellNameStr = cellName.getValue();
Treeitem treeitem = new Treeitem();
// 创建一个单元格
Treecell treecell = new Treecell(cellNameStr);
Treerow treerow = new Treerow();
// 将单元格设置成tree row的孩子,这里不能appendChild
treecell.setParent(treerow);
// 这里不能appendChild,因为一个item只能有一行,但可以有一个Tree children
treerow.setParent(treeitem);
// 在树的第一个孩子,就是Tree children下添加一个新的item
tree.getFirstChild().appendChild(treeitem);
}
}
前台页面 index.zul:
<?page title="手动添加树"?> <window title="Hello World!!" border="normal" width="400px" height="400px" apply="com.AddChild"> <tree id="tree"> <treechildren> <treeitem> <treerow> <treecell label="item1" /> </treerow> <treechildren> <treeitem> <treerow> <treecell label="item2" /> </treerow> </treeitem> </treechildren> </treeitem> </treechildren> </tree> <div> <textbox id="cellName"/> <button id="add" label="确认添加孩子节点"/> <button id="addRoot" label="确认添加0层节点"/> </div> </window>
写的粗糙 多多指教