📄 treeview.java.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 + -