`
wuhaidong
  • 浏览: 357773 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

JTree的一些常用方法

    博客分类:
  • NC
 
阅读更多

在实际开发过程中会经常使用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);

  }

  }

  }
 
分享到:
评论

相关推荐

    JTree相关方法及demo实例

    本文将总结JTree的一些常用方法,并通过实例来演示如何使用这些方法,为初学者提供学习参考。 1. JTree组件常用方法 JTree组件提供了多种方法来实现用户界面的定制和树形数据的管理,以下是一些常用的方法: - `...

    JTree的Doc文档

    在Java编程中,理解和掌握`JTree`的使用方法对于创建具有用户友好界面的应用程序至关重要。`jenkov-prizetags-doc-3.4.0.zip`压缩包提供的JTree Doc文档是开发者学习和查阅`JTree`功能的重要参考资料。 **Javadoc...

    JTree的实现代码

    在IT领域,尤其是在Web开发中,`JTree`是一个常用组件,它用于在用户界面中展示数据的层次结构,比如文件系统、组织架构等。在本案例中,我们讨论的是一个使用JavaScript实现的JTree,这通常是通过HTML、CSS和...

    JTree 需要树的可以研究下

    6. **`JTree`的常用方法** - `addTreeSelectionListener`: 添加树选择监听器。 - `getSelectedNode`: 获取当前选中的节点。 - `expandRow`: 展开指定行的节点。 - `collapseRow`: 折叠指定行的节点。 - `...

    MeJT.rar_jtree

    DefaultMutableTreeNode是JTree中常用的模型类,它可以动态地添加、删除和修改节点。然后,他们会将这个树模型(TreeModel)与JTree组件关联起来,通常通过调用`new JTree(model)`来实现。接着,可能还会设置JTree的...

    对jtree实现增加修改,设置节点图片

    JTree是由TreeNode对象组成的树形结构,TreeNode是树节点的抽象类,它的子类DefaultMutableTreeNode是最常用的实现。每个节点可以有任意数量的子节点,并且可以通过JTree的模型(TreeModel)来添加、删除或修改这些...

    java中JTree高级编程

    最常用的实现是DefaultTreeModel,它可以容纳任意数量的TreeNode对象,这些节点代表了树结构中的每个元素。TreeNode类可以代表一个叶子节点(没有子节点)或一个分支节点(有子节点)。你可以根据需要创建自定义的...

    treea.rar_jtree_tree java

    以下是一些关于 `JTree` 的关键知识点: 1. **构造JTree**: 创建 `JTree` 可以通过提供 `DefaultMutableTreeNode` 或者自定义的 `TreeModel` 实例。`DefaultMutableTreeNode` 是最常用的,用于简单数据结构的展示。...

    JavaSwing中的JTree模型.pdf

    TreeNode 接口是 JTree 模型中的一个重要接口,定义了树节点的基本方法。TreeNode 接口定义了对节点的父节点和子节点的访问方法,以及获取节点索引和获取一个节点包含的子节点数目的方法。MutableTreeNode 接口是 ...

    Java Swing中的表格(JTable)和树(JTree)组件使用实例

    之后,将`TreeModel`设置到`JTree`中,并可能添加一些事件监听器来处理用户的交互。 结合`JTable`和`JTree`,开发者可以在GUI应用程序中创建复杂的数据展示和交互界面。通过自定义`TableModel`和`TreeModel`,可以...

    Jtable和JTree的写法示例代码

    【JTree的常用构造方法】 1. `JTree()`:返回带有示例模型的JTree。 2. `JTree(Object[] value)`:创建一个JTree,其中数组的每个元素都是新根节点的子节点。 3. `JTree(TreeNode root)`:以指定的TreeNode作为根...

    Java Swing JComboBox下拉列表框的示例代码

    JComboBox 提供了一些常用的方法,以下是其中的一些: * setSelectedIndex(int index):设置当前选中的索引。 * getSelectedIndex():获取当前选中的索引。 * getSelectedItem():获取当前选中的数据项。 * ...

    老外用Swing开发的一些JAVA常用窗口编程组件源码.rar

    这个压缩包“老外用Swing开发的一些JAVA常用窗口编程组件源码.rar”显然包含了用Swing实现的各种常见GUI组件的源代码,这对于学习和理解Swing以及Java窗口编程非常有帮助。 Swing提供了丰富的组件库,用于构建桌面...

    利用Swing开发的JAVA常用组件代码

    本资源"利用Swing开发的JAVA常用组件代码fprod-common-7.3.rar"提供了使用Swing开发的一些常见组件的示例代码,这将有助于理解和实践如何在Java程序中创建和操作用户界面。 Swing提供了许多组件,它们是构建用户...

    常用的html控件,包含自定义控件

    10. jtree:jTree是基于jQuery的树形插件,用于在网页上呈现树状数据结构,支持拖放操作、异步加载和自定义节点图标。 11. 常用html控件:这个文件可能包含了其他一些常见的HTML控件示例或代码片段,用于教学或参考...

    javaSwing常用的组件

    以下是一些Java Swing中常用的组件,以及它们的功能和应用。 1. **JFrame**: JFrame 是一个顶级容器,它用于承载其他的组件。它是大多数Swing应用的基础,因为它提供了一个窗口来展示内容。你可以添加JPanel、...

    java实用组件集 源码 树形结构组件

    8. **可展开/折叠节点**: 用户可以通过单击加号(+)或减号(-)来展开或折叠节点,这是通过`JTree`的`setExpandedState()`方法实现的。 9. **拖放操作**: `JTree`支持拖放功能,允许用户通过鼠标操作重新排列节点...

    树型控件 java.rar

    在Java编程领域,树型控件(Tree View)是一种常用的数据可视化组件,它允许用户以层级结构展示数据,常用于文件系统、组织架构或者复杂的分类系统等场景。本压缩包"树型控件 java.rar"包含了一个使用Java实现的树型...

    树菜单

    - 工厂模式:可能用到工厂方法来创建TreeNode对象,以封装树的结构信息。 - 组合模式:TreeNode类可以看作是组合模式的应用,允许将树节点组合成树形结构,同时处理叶子节点和容器节点。 4. **实际应用**: - ...

Global site tag (gtag.js) - Google Analytics