zk 手动添加树的节点

/** 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>

 

写的粗糙 多多指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值