知识大全 JTree用法及JTree使用经验总结
Posted 结点
篇首语:一箫一剑平生意,负尽狂名十五年。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JTree用法及JTree使用经验总结相关的知识,希望对你有一定的参考价值。
JTree用法及JTree使用经验总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
import java awt Dimension;
import java awt Color;
import javax swing JFrame;
import javax swing JPanel;
import javax swing JScrollPane;
import javax swing JTree;
import javax swing BoxLayout;
import javax swing tree TreePath;
import javax swing tree DefaultMutableTreeNode;
import javax swing tree DefaultTreeModel;
/*
JTree的构造函数:
JTree()
JTree(Hashtable value)
JTree(Object[] value)//只有这个构造函数可以创建多个根结点
JTree(TreeModel newModel)
JTree(TreeNode root)
JTree(TreeNode root boolean asksAllowsChildren)
JTree(Vector value)
*/
public class JTreeDemo
public static void main (String[] args)
// 构造函数 JTree()
JTree example = new JTree();
// 构造函数 JTree(Object[] value)
Object[] letters = a b c d e ;
JTree example = new JTree (letters);
// 构造函数 JTree(TreeNode root)(TreeNode空)
// 用空结点创建树
DefaultMutableTreeNode node = new DefaultMutableTreeNode(); // 定义树结点
JTree example = new JTree (node ); // 用此树结点做参数调用 JTree的构造函数创建含有一个根结点的树
// 构造函数 JTree(TreeNode root)(同上 只是TreeNode非空)
// 用一个根结点创建树
DefaultMutableTreeNode node = new DefaultMutableTreeNode( Color );
JTree example = new JTree (node ); // 结点不可以颜色 默认为白面黑字
example setBackground (Color lightGray);
// 构造函数 JTree(TreeNode root boolean asksAllowsChildren)(同上 只是TreeNode又有不同)
// 使用DefaultMutableTreeNode类先用一个根结点创建树 设置为可添加孩子结点 再添加孩子结点
DefaultMutableTreeNode color = new DefaultMutableTreeNode( Color true );
DefaultMutableTreeNode gray = new DefaultMutableTreeNode ( Gray );
color add (gray);
color add ( new DefaultMutableTreeNode ( Red ));
gray add ( new DefaultMutableTreeNode ( Lightgray ));
gray add ( new DefaultMutableTreeNode ( Darkgray ));
color add ( new DefaultMutableTreeNode ( Green ));
JTree example = new JTree (color);
// 构造函数 JTree(TreeNode root)(同上 只是TreeNode非空)
// 通过逐个添加结点创建树
DefaultMutableTreeNode biology = new DefaultMutableTreeNode ( Biology );
DefaultMutableTreeNode animal = new DefaultMutableTreeNode ( Animal );
DefaultMutableTreeNode mammal = new DefaultMutableTreeNode ( Mammal );
DefaultMutableTreeNode horse = new DefaultMutableTreeNode ( Horse );
mammal add (horse);
animal add (mammal);
biology add (animal);
JTree example = new JTree (biology);
horse isLeaf();
horse isRoot();
// 构造函数:JTree(TreeModel newModel)
// 用DefaultMutableTreeNodel类定义一个结点再用这个结点做参数定义一个用DefaultTreeMode
// 创建一个树的模型 再用JTree的构造函数创建一个树
DefaultMutableTreeNode root = new DefaultMutableTreeNode ( Root );
DefaultMutableTreeNode child = new DefaultMutableTreeNode ( Child );
DefaultMutableTreeNode child = new DefaultMutableTreeNode ( Child );
DefaultMutableTreeNode child = new DefaultMutableTreeNode ( Child );
root add (child ); child add (child ); child add (child );
DefaultTreeModel model = new DefaultTreeModel (root);
JTree example = new JTree (model);
JPanel panel = new JPanel();
panel setLayout ( new BoxLayout (panel BoxLayout X_AXIS));
panel setPreferredSize ( new Dimension ( ));
panel add ( new JScrollPane (example )); // JTree必须放在JScrollPane上
panel add ( new JScrollPane (example ));
panel add ( new JScrollPane (example ));
panel add ( new JScrollPane (example ));
panel add ( new JScrollPane (example ));
panel add ( new JScrollPane (example ));
panel add ( new JScrollPane (example ));
JFrame frame = new JFrame ( JTreeDemo );
frame setDefaultCloseOperation (JFrame EXIT_ON_CLOSE);
frame setContentPane (panel);
frame pack();
frame show();
××××××××××××××××××××××××××××××××××××××××××××××
在实际开发过程中会经常使用JTree组件 平时会遇到这样或那样的问题 在此将偶得一点经验写下来 与大家共享 希望对大家有所帮助
private JTree jtNetDevice;//数组件申明
private JScrollPane jspTree;//滚动面板申明
初始化
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode( root );
jtNetDevice = new JTree(rootNode);
jtNetDevice setAutoscrolls(true);
getTreeSelectionModel() setSelectionMode(TreeSelectionModel SINGLE_TREE_SELECTION);//设置单选模式
jspTree = new JScrollPane();
jspTree getViewport() add(jtNetDevice null);
三个经常使用的取值函数
private DefaultTreeModel getTreeModel()
return (DefaultTreeModel)jtNetDevice getModel();
private DefaultMutableTreeNode getRootNode()
return (DefaultMutableTreeNode)getTreeModel() getRoot();
private TreeSelectionModel getTreeSelectionModel()
return jtNetDevice getSelectionModel();
根据node得到path
TreePath visiblePath = new TreePath(getTreeModel() getPathToRoot(node));
根据Path展开到该节点
jtNetDevice makeVisible(visiblePath);
根据path设定该节点选定
jtNetDevice setSelectionPath(visiblePath);
选中节点的方法
首先 根据节点得到树路径 其中chosen为需要选中的节点
TreePath visiblePath = new TreePath( ( (DefaultTreeModel) jtNetDevice getModel())
getPathToRoot(chosen));
然后根据Path选中该节点
jtNetDevice setSelectionPath(visiblePath);
滚动到可见位置
jtNetDevice scrollPathToVisible(visiblePath);
给JTree添加右键弹出菜单
void jtNetDevice_mouseReleased(MouseEvent e)
if (e isPopupTrigger())
jPopupMenu show(e getComponent() e getX() e getY());//弹出右键菜单
关于JTree的展开
// If expand is true expands all nodes in the tree
// Otherwise collapses all nodes in the tree
public void expandAll(JTree tree boolean expand)
TreeNode root = (TreeNode)tree getModel() getRoot();
// Traverse tree from root
expandAll(tree new TreePath(root) expand);
private void expandAll(JTree tree TreePath parent boolean expand)
// Traverse children
TreeNode node = (TreeNode)parent getLastPathComponent();
if (node getChildCount() >= )
for (Enumeration e=node children(); e hasMoreElements(); )
TreeNode n = (TreeNode)e nextElement();
TreePath path = parent pathByAddingChild(n);
expandAll(tree path expand);
// Expansion or collapse must be done bottom up
if (expand)
tree expandPath(parent);
else
llapsePath(parent);
如何遍历JTree
// 创建树
JTree tree = new JTree();
// 添加树节点
// 遍历所有节点
visitAllNodes(tree);
// 仅遍历展开的节点
visitAllExpandedNodes(tree);
// Traverse all nodes in tree
public void visitAllNodes(JTree tree)
TreeNode root = (TreeNode)tree getModel() getRoot();
visitAllNodes(root);
public void visitAllNodes(TreeNode node)
// node is visited exactly once
process(node);
if (node getChildCount() >= )
for (Enumeration e=node children(); e hasMoreElements(); )
TreeNode n = (TreeNode)e nextElement();
visitAllNodes(n);
// Traverse all expanded nodes in tree
public void visitAllExpandedNodes(JTree tree)
TreeNode root = (TreeNode)tree getModel() getRoot();
visitAllExpandedNodes(tree new TreePath(root));
public void visitAllExpandedNodes(JTree tree TreePath parent)
// Return if node is not expanded
if (!tree isVisible(parent))
return;
// node is visible and is visited exactly once
TreeNode node = (TreeNode)parent getLastPathComponent();
process(node);
// Visit all children
if (node getChildCount() >= )
for (Enumeration e=node children(); e hasMoreElements(); )
TreeNode n = (TreeNode)e nextElement();
TreePath path = parent pathByAddingChild(n);
visitAllExpandedNodes(tree path);
cha138/Article/program/Java/hx/201311/25738
相关参考
JTree树控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 树和节点的基本概念 &
华工面试经验总结今天12点上完韩语后,就匆匆赶去了大学城华工。三下乡还有农民工子女教育项目面试。老实说,去之前,其实是有点不想去的,有点害怕。害怕失败。就到了要上1线的时候,还是想着要放弃。不过,到达
总结的写作包括四大内容,即成绩、经验、问题、教训。_____答案:正确解析:总结是对过去一定时期的工作、学习或思想情况进行回顾、分析,并做出客观评价的书面材料。其写作包括四部分内容,即成绩、经验、问题
.NETFramework经验总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! NETFram
开发经典:ASP开发10条经验总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 不要再做ASP
经验分享JVM调优方法总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
关于MySQL编码问题的经验总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以下所描述无理论
Oracle建立DBLINK的操作经验总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以下的
以高产、优质、高效作为永春乡玉米高产创建技术措施的指导方针,合理选择栽培技术,管理方式等,具体做法是:推广良种+化除+矮壮素+叶面肥+杀虫(菌)剂+测土配方+营养团育苗移栽或地膜覆盖栽培,总结出一套系
以高产、优质、高效作为永春乡玉米高产创建技术措施的指导方针,合理选择栽培技术,管理方式等,具体做法是:推广良种+化除+矮壮素+叶面肥+杀虫(菌)剂+测土配方+营养团育苗移栽或地膜覆盖栽培,总结出一套系