⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeview.java.svn-base

📁 开发框架。 一.说明: 此框架的意图是解决手机软件开发中常遇到
💻 SVN-BASE
字号:
package org.gggeye.easymf.ui;

import java.util.Vector;

/**
 * 树结构UI <br/>
 * 
 * UI 实现原理
 * 首先明确二叉树的数据结构
 * 1. 定义Tree为父节点。-- 可以修改Tree的实现
 * 2. 定义TreeNode为子节点
 * 
 * Tree 与 TreeNode的关系
 * @author wuhua
 * <a href="http://wuhua.3geye.net">我的博客</a>
 *
 */
public class TreeView extends Panel {
	//Vector trees;
	public TreeView(String _title) {
		super(_title);
		//trees = new Vector();
		 
	}
	
	/**
	 * 添加一个树节点
	 * @param _name
	 * @return
	 */
	public Tree addTree(String _name){
		Tree tree = new Tree(_name, this);
		//trees.addElement(tree);
		this.viewBuilder.addView(tree);
		return tree;
	}
	
	public void addTree(Tree _tree){
		//trees.addElement(_tree);
		this.viewBuilder.addView(_tree);
	}
	
	/**
	 * 其中Node 可以自己通过extends View 来实现
	 * @param _node
	 * @param tree
	 * @return
	 */
	public View addNode(View _node, Tree _tree){
		if(_tree == null)
			return null;
		_tree.addNode(_node);
		
		if(_tree.isOpen){
			resetTree();
			this.repaint();
		}
		return _node;
	}
	
	
	
	protected void resetTree() {
		int tFocusIndex = this.document.focusIndex;
		View[] tBakViews = new View[this.document.views.size()];
		this.document.views.copyInto(tBakViews);
		this.viewBuilder.reset();
		for (int i = 0; i <  tBakViews.length; i++) {
			View tView = (View)  tBakViews[i];
			if(tView instanceof Node)
				continue;
			
			this.viewBuilder.addView(tView);
			if(tView instanceof Tree){
				Tree tTree = (Tree)tView;
				if (tTree.isOpen) {
					for (int j = 0; j < tTree.nodes.size(); j++) {
						this.viewBuilder.addView((View) tTree.nodes.elementAt(j));
					}
				}
			}
			
			
		}
		this.document.focusIndex = tFocusIndex;

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -