- 浏览: 241660 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (172)
- J2SE学习模块 (35)
- Oracle学习模块 (12)
- Jsp学习模块 (11)
- Servlet学习模块 (1)
- Tomcat 模块 (4)
- Struts1.x学习模块 (5)
- Spring学习模块 (2)
- Hibernate学习模块 (11)
- XML学习模块 (1)
- UML学习模块 (0)
- 算法学习模块 (6)
- 设计模式模块 (2)
- Mysql学习模块 (1)
- SQL_Server学习模块 (8)
- 项目开发模块 (10)
- 搜索引擎 (14)
- 开发工具的使用 (2)
- 面试题集 (7)
- 开发工具 (8)
- Linux (5)
- JavaFX模块 (1)
- 程序与人生 (4)
- 计算机网络 (6)
- EJB学习模块 (1)
- javascript常用模块 (2)
- 英语学习 (1)
- 程序变量命名的几条法则:匈牙利命名法 (1)
- 驼峰式大小写 (1)
- 帕斯卡命名法 (1)
- Jquery控制图片宽度及高度 (1)
- 喜讯--FireFox7.01已经支持CSS中 text-overflow ellipsis 属性 (1)
- 遍历 Map 的三种 常用方法 java (1)
- JDK自带工具Jstat (1)
- 提高 Oracle 查询 效率 建议 (1)
- 常用工具 (1)
最新评论
-
a465492689:
挺好,谢谢分享
存储过程 -
huangqinghe:
ding 顶~~~
Intellij Idea12 中文乱码问题总结 -
Redpick13:
楼主好人啊,有耐心
Java中的二维数组的定义与学习 -
dandongsoft:
神鼎飞丹砂
java.lang.NoClassDefFoundError: org/apache/lucene/index/memory/MemoryIndex -
devil__lord:
不错讲得很清楚 color=#cff
Java中的二维数组的定义与学习
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 example1 = new JTree(); // 构造函数:JTree(Object[] value) Object[] letters = { " a " , " b " , " c " , " d " , " e " }; JTree example2 = new JTree (letters); // 构造函数:JTree(TreeNode root)(TreeNode空) // 用空结点创建树 DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(); // 定义树结点 JTree example3 = new JTree (node1); // 用此树结点做参数调用 JTree的构造函数创建含有一个根结点的树 // 构造函数:JTree(TreeNode root)(同上,只是TreeNode非空) // 用一个根结点创建树 DefaultMutableTreeNode node2 = new DefaultMutableTreeNode( " Color " ); JTree example4 = new JTree (node2); // 结点不可以颜色,默认为白面黑字 example4.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 example5 = 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 example6 = new JTree (biology); horse.isLeaf(); horse.isRoot(); // 构造函数:JTree(TreeModel newModel) // 用DefaultMutableTreeNodel类定义一个结点再用这个结点做参数定义一个用DefaultTreeMode // 创建一个树的模型,再用JTree的构造函数创建一个树 DefaultMutableTreeNode root = new DefaultMutableTreeNode ( " Root1 " ); DefaultMutableTreeNode child1 = new DefaultMutableTreeNode ( " Child1 " ); DefaultMutableTreeNode child11 = new DefaultMutableTreeNode ( " Child11 " ); DefaultMutableTreeNode child111 = new DefaultMutableTreeNode ( " Child111 " ); root.add (child1); child1.add (child11); child11.add (child111); DefaultTreeModel model = new DefaultTreeModel (root); JTree example7 = new JTree (model); JPanel panel = new JPanel(); panel.setLayout ( new BoxLayout (panel, BoxLayout.X_AXIS)); panel.setPreferredSize ( new Dimension ( 700 , 400 )); panel.add ( new JScrollPane (example1)); // JTree必须放在JScrollPane上 panel.add ( new JScrollPane (example2)); panel.add ( new JScrollPane (example3)); panel.add ( new JScrollPane (example4)); panel.add ( new JScrollPane (example5)); panel.add ( new JScrollPane (example6)); panel.add ( new JScrollPane (example7)); 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;//滚动面板申明
1、初始化
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);
2、三个经常使用的取值函数
private DefaultTreeModel getTreeModel(){ return (DefaultTreeModel)jtNetDevice.getModel(); } private DefaultMutableTreeNode getRootNode(){ return (DefaultMutableTreeNode)getTreeModel().getRoot(); } private TreeSelectionModel getTreeSelectionModel(){ return jtNetDevice.getSelectionModel(); }
3、根据node得到path:
TreePath visiblePath = new TreePath(getTreeModel().getPathToRoot(node));
4、根据Path展开到该节点
jtNetDevice.makeVisible(visiblePath);
5、根据path设定该节点选定
jtNetDevice.setSelectionPath(visiblePath);
6、选中节点的方法
首先,根据节点得到树路径,其中chosen为需要选中的节点
TreePath visiblePath = new TreePath( ( (DefaultTreeModel) jtNetDevice.getModel()).
getPathToRoot(chosen));
然后根据Path选中该节点
jtNetDevice.setSelectionPath(visiblePath);
7、滚动到可见位置
jtNetDevice.scrollPathToVisible(visiblePath);
8、给JTree添加右键弹出菜单
void jtNetDevice_mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) { jPopupMenu1.show(e.getComponent(), e.getX(), e.getY());//弹出右键菜单 } }
9、关于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() >= 0) { 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 { tree.collapsePath(parent); } }
10、如何遍历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() >= 0) { 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() >= 0) { for (Enumeration e=node.children(); e.hasMoreElements(); ) { TreeNode n = (TreeNode)e.nextElement(); TreePath path = parent.pathByAddingChild(n); visitAllExpandedNodes(tree, path); } } }
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kukuwuwu/archive/2007/07/31/1718479.aspx
发表评论
-
巧用JDK自带工具Jstat查看Gc垃圾回收之使用方法
2012-07-19 09:40 3915如何查看JVM中内存使用情况如何? JVM垃圾回收是否正常? ... -
遍历Map的三种常用方法 java
2011-11-09 12:06 28851、一般的map定义: Map<Key, Object& ... -
程序变量命名的几条法则:匈牙利命名法,驼峰式大小写,帕斯卡命名法
2011-09-07 17:54 51281.匈牙利命名法的好处: ... -
JDK源码中对当前时间的一些用法
2011-09-05 14:51 1077JDK源码中对当前时间的一些用法: String[] ... -
Eclipse安装反编译工具查看Jar包源码 JD Eclipse插件
2011-08-24 10:37 5087如何在Eclipse中安装反编译工具查看Jar包源码呢? 打 ... -
Struts2图片上传成功后,异常:java.lang.IllegalStateException
2011-07-10 18:49 19461.场景: 使用Struts2图片上传成功后出现异常: ... -
J2EE表生成器@TableGenerator
2011-03-31 14:29 1725最近工作中遇到了许多 ... -
Spring Hibernate Extjs开发指南
2011-03-23 18:08 981从学习到找工作,然后再面试,最后才经历上班; 从这段时间对自 ... -
获取当前时间的前三个月 java
2011-03-17 11:14 4742获取当前时间的前三个月: Date date = n ... -
java 线程的状态与控制
2010-12-16 20:54 1122一、线程的状态 线程的主要状态有: 1.新 ... -
MyEclipse Blue 6.5 注册码 可到2013年12月
2010-12-06 09:44 1520做Java软件开发的,首选的软件工具莫非是MyEclip ... -
关于 Java Collections API 您不知道的 5 件事,第 2 部分
2010-10-24 00:28 524简介: 您可以在任何地方使用 Java™ 集合,但是一定要小心 ... -
关于 Java 常用工具您不知道的 5 件事
2010-10-24 00:25 519简介: 有些 Java™ 工具无法分类,只能算作 “有用的东西 ... -
关于 JVM 命令行标志您不知道的 5 件事
2010-10-24 00:22 764简介: Java™ 虚拟机有数百个命令行选项,被经验丰富的开发 ... -
关于 Java Database Connectivity 您不知道的 5 件事
2010-10-24 00:21 501简介: JDBC,即 Java™ Database Conne ... -
关于 Java Scripting API 您不知道的 5 件事
2010-10-24 00:17 579简介: Java™ 语言足以满足您的一些项目的需求,但是脚本语 ... -
关于 Java 性能监控您不知道的 5 件事,第 2 部分
2010-10-24 00:15 563简介: 如果 JDK 中配置有全功能分析器 JConsole ... -
关于 Java 性能监控您不知道的 5 件事,第 1 部分
2010-10-24 00:13 757简介: 责怪糟糕的代码 ... -
关于 JAR 您不知道的 5 件事
2010-10-24 00:11 403简介: 除了一些基础的 JAR 之外,许多 Java™ 开发人 ... -
关于 java.util.concurrent 您不知道的 5 件事,第 2 部分
2010-10-24 00:05 482简介: 除了具有很好的并发性的 Collections,jav ...
相关推荐
JTree用法及JTree使用经验总结(吐血推荐) 1、初始化 2、三个经常使用的取值函数 3、根据node得到path:4、根据Path展开到该节点 5、根据path设定该节点选定 6、选中节点的方法 7、滚动到可见位置 8、给JTree添加右键...
### 如何使用JTree:详解与实践 #### JTree简介 `JTree`是Java Swing中的一个组件,用于展示层次化的数据结构。它允许用户在应用程序中构建树形视图来表示目录结构、组织结构图等。`JTree`继承自`JComponent`类,...
### JTree用法详解:Swing中的树状结构控件 在Java Swing中,`JTree`是一个非常重要的组件,用于展示层次结构的数据,如文件系统、组织结构图等。本文将详细介绍`JTree`的各种使用方法,包括如何创建、自定义外观、...
### JTree的用法详解 #### 一、引言 `JTree` 是 Java Swing 库中的一个重要组件,用于在图形用户界面 ...对于初学者来说,掌握 `JTree` 的基本使用方法是非常重要的,这有助于更好地理解 Java Swing 框架的高级特性。
Java Swing中的JTree组件是用来展示层次结构数据的可视...在设计和实现时,理解TreeNode接口和DefaultMutableTreeNode类的用法,以及如何利用JTree的各种构造函数和监听器,对于创建高效、灵活的图形用户界面至关重要。
### Java组件之JTree使用详解 #### 一、引言 `JTree`是Java Swing中的一个重要组件,用于展示层次化的数据结构。它提供了一种直观的方式来表示具有...掌握`JTree`的使用方法对于开发高效的桌面应用程序非常有帮助。
在Java的Swing库中,`JTree`组件是一个用于展示层次数据的控件,它以树状结构显示数据。`jtree`标题所指的可能是关于如何在`JTree`中添加复选框(checkboxes)的功能。这通常是为了让用户能够多选树中的节点,进行...
在Java Swing库中,JTree组件是一个非常有用的可视化控件,用于展示层次化的数据结构,如文件系统目录或组织结构图。...文档“如何使用Trees.doc”应该提供了更深入的细节和示例代码,帮助你进一步掌握JTree的用法。
**JTree 深度解析** `JTree` 是Java Swing库中的一个重要组件,它用于在用户界面中显示树状数据结构。...理解其核心概念、特性和使用方法,可以帮助开发者更好地设计和实现具有动态更新和交互功能的应用程序。
实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。
在Java中,`JTree`通常与`DefaultMutableTreeNode`和`TreeModel`一起使用。`DefaultMutableTreeNode`是`TreeNode`的实现,允许添加、移除和改变子节点。`TreeModel`是树数据模型接口,用于管理树的结构和数据。 ```...
通过本篇介绍,我们不仅了解了如何使用 `JTree` 的基本构造方法来创建树形结构,还学习了如何使用 `Hashtable` 来组织数据以及如何展示这些数据。此外,我们还简要探讨了 `JTree` 的一些高级特性,如自定义渲染器、...
这些代码可能涵盖了更复杂的功能,比如自定义渲染器、拖放操作、数据绑定等,学习这些代码可以帮助开发者更好地理解和应用JTree和JTable在实际项目中的各种用法。 总之,JTree和JTable是Java GUI编程中不可或缺的...
总结来说,`JTree`控件在Java Swing中用于创建和管理树形数据视图,提供了丰富的构造方法、数据模型、渲染器和事件监听机制,使得开发者可以灵活地构建和定制树结构,以满足各种用户界面的需求。在实际开发中,利用...
在Java Swing库中,`JTree`是一个非常重要的组件,用于显示和操作树形数据结构。这个例子展示了如何实现一个可拖动节点的`JTree`,这在用户界面设计中是一个常见且实用的功能,特别是在需要展示层次结构信息时。`...
在Java编程中,理解和掌握`JTree`的使用方法对于创建具有用户友好界面的应用程序至关重要。`jenkov-prizetags-doc-3.4.0.zip`压缩包提供的JTree Doc文档是开发者学习和查阅`JTree`功能的重要参考资料。 **Javadoc...
然而,这里的"JTree"特指一个使用纯JavaScript编写的树形控件。它提供了与Java JTree类似的功能,但适用于Web环境,无需服务器端Java支持。 2. **JavaScript基础**: JavaScript是一种客户端脚本语言,用于增强...
本项目是关于如何在Java应用程序中结合使用这两种组件的一个示例,特别强调了如何将`JTree`的节点内容动态地显示到`JTable`中。 首先,我们来看`JTree`。`JTree`是用来展示树状数据结构的组件,如文件系统目录结构...
接着,我们可以使用JTree类的实例化方法,将创建的树模型传递给JTree对象,完成树的构造。为了响应用户的交互,如节点的点击或展开,我们需要添加TreeSelectionListener,这样当用户选择某个节点时,可以触发相应的...
你可以下载相关文档,深入了解`JTree2.0`的具体用法和最佳实践。 在实际项目中,`JTree`常用于文件系统浏览、数据库结构展示、组织结构图等场景。通过熟练掌握`JTree2.0`,你可以创建出功能强大且用户友好的图形...