`

Jtree中添加删除节点的例子

阅读更多
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.*;

public class Test extends JFrame {

	JTree tree = new JTree();

	DefaultTreeModel model = (DefaultTreeModel) tree.getModel();

	TreeSelectionModel selectionModel = tree.getSelectionModel();

	JButton removeButton = new JButton("Remove selected node");

	JButton addButton = new JButton("Add node");

	public Test() {

		Container contentPane = getContentPane();

		selectionModel.setSelectionMode(

		TreeSelectionModel.SINGLE_TREE_SELECTION);

		contentPane.add(new ControlPanel(), BorderLayout.NORTH);

		contentPane.add(tree, BorderLayout.CENTER);

		tree.addTreeSelectionListener(

		new TreeSelectionListener() {

			public void valueChanged(TreeSelectionEvent e) {

				TreePath path = e.getNewLeadSelectionPath();

				boolean nodesAreSelected = (path != null);

				addButton.setEnabled(nodesAreSelected);

				removeButton.setEnabled(nodesAreSelected);

			}

		});

		model.addTreeModelListener(new TreeModelListener() {

			public void treeNodesInserted(TreeModelEvent e) {

				showInsertionOrRemoval(e, " added to ");

			}

			public void treeNodesRemoved(TreeModelEvent e) {

				showInsertionOrRemoval(e, " removed from ");

			}

			private void showInsertionOrRemoval(TreeModelEvent e,

			String s) {

				Object[] parentPath = e.getPath();

				int[] indexes = e.getChildIndices();

				Object[] children = e.getChildren();

				Object parent = parentPath[parentPath.length - 1];

				JOptionPane.showMessageDialog(
						Test.this,
						"Node " + children[0].toString() + "" + s
								+ parent.toString() + " at index " + indexes[0],
						"Node Added or Removed",
						JOptionPane.INFORMATION_MESSAGE);

			}

			public void treeNodesChanged(TreeModelEvent e) {
			}

			public void treeStructureChanged(TreeModelEvent e) {
			}

		});

	}

	class ControlPanel extends JPanel {

		public ControlPanel() {

			addButton.setEnabled(false);

			removeButton.setEnabled(false);

			add(addButton);

			add(removeButton);

			addButton.addActionListener(new ActionListener() {

				public void actionPerformed(ActionEvent e) {

					TreePath path =

					selectionModel.getSelectionPath();

					MutableTreeNode parent, node =

					(MutableTreeNode) path.getLastPathComponent();

					if (path.getPathCount() > 1)

						parent = (MutableTreeNode) node.getParent();

					else

						parent = (MutableTreeNode) node;

					int index = parent.getIndex(node) + 1;

					String s = JOptionPane.showInputDialog(

					Test.this,

					"Enter a name for the new node:",

					"New Tree Node",

					JOptionPane.QUESTION_MESSAGE);

					MutableTreeNode newNode =

					new DefaultMutableTreeNode(s);

					model.insertNodeInto(newNode, parent, index);

				}

			});

			removeButton.addActionListener(new ActionListener() {

				public void actionPerformed(ActionEvent e) {

					TreePath path =

					selectionModel.getSelectionPath();

					if (path.getPathCount() == 1) {

						JOptionPane.showMessageDialog(ControlPanel.this,

						"Can't remove root node!");

						return;

					}

					MutableTreeNode node =

					(MutableTreeNode) path.getLastPathComponent();

					model.removeNodeFromParent(node);

				}

			});

		}

	}

	public static void main(String args[]) {

		Test t = new Test();

		t.setSize(400, 300);

		t.show();

	}

}
分享到:
评论
1 楼 hejinxiqq 2011-04-07  
厉害 

相关推荐

    java Swing JTree的教程实例

    在例子中,使用了`FlowLayout`布局管理器将`JTree`添加到窗口中。 3. **节点的选中和信息获取**: JTree允许用户选择特定的节点。当用户选择节点时,可以通过监听`TreeSelectionListener`事件来获取选中的节点信息...

    用Hashtable构建Jtree,使各节点按输入顺序显示

    总结来说,这个例子展示了如何通过自定义数据结构(`MyHashtable`)来解决`JTree`节点顺序问题。`MyHashtable`通过维护一个额外的列表来记录键的插入顺序,从而确保`JTree`的构造函数在构建树形结构时能按照输入顺序...

    Java写的树状目录-JTree的例子练习

    在这个例子中,我们创建了一个简单的两层树,根节点下有两个子节点。通过`JFrame`显示`JTree`,可以看到层次化的数据结构。 除了基本的创建和显示,`JTree`还有许多高级功能,如展开/折叠节点、拖放操作、自定义...

    jtree树应用

    这个例子创建了一个包含两个子节点的JTree,并将其放入滚动面板显示。 总之,JTree是Java Swing中一个强大的组件,它使得在图形用户界面中展示和操作树形数据变得简单直观。通过熟练掌握JTree的使用,开发者可以...

    JavaSwing中的JTree模型.pdf

    以下是一个简单的例子,展示了如何创建一个包含 "World" 作为根节点,并添加 "USA" 作为子节点的 JTree: ```java DefaultMutableTreeNode root = new DefaultMutableTreeNode("World"); DefaultMutableTreeNode ...

    swing界面设计之JTree

    #### (五) JTree右键菜单实现编辑、添加、删除节点 **Test.java源代码**:示例代码展示了如何在JTree上添加右键菜单,并实现编辑、添加、删除等功能。 #### (六) 功能齐全的JTree例子 **TreeEditTest.java源代码*...

    编写一个能动态改变树结点的程序

    在这个例子中,没有给出具体的实现,但通常我们会在这里添加对`treeModel`的`nodeInserted`, `nodeRemoved`, `nodeChanged`等方法的处理逻辑。 6. **`GridLayout`**: `java.awt.GridLayout`是布局管理器之一,用于...

    JAVA目录树实例重要.pdf

    `addSiblingButton`、`addChildButton`和`deleteButton`都有对应的监听器,当用户点击这些按钮时,会触发相应的行为,如添加兄弟节点、添加子节点或删除节点。 7. **JFrame与窗口关闭**: `JFrame`是Java Swing中...

    checknode(树型)

    在这个特定的例子中,我们关注的是"checknode(树型)",这意味着它是在JTree的基础上增加了复选框功能,使得用户能够对树中的节点进行选择操作。下面我们将详细探讨这个主题。 首先,`CheckNodeTreeExample.java`...

    javaTree的一个例子

    - **`DefaultMutableTreeNode`**:这是Swing框架中用于表示树节点的核心类,支持动态添加和删除子节点。 - **`JTree`与`DefaultTreeModel`**:`JTree`是Swing提供的用于显示树结构的组件,而`DefaultTreeModel`是...

    JAVA swing类例子

    事件监听器如`TreeSelectionListener`可用于响应用户在树结构中选择节点时的交互。 2. **JCheckBoxDemo.java**:`JCheckBox`是Swing中的复选框组件,用于提供两种状态的选择:选中或未选中。此示例可能包括如何创建...

    swing中Tree与滚动条用法实例分析

    在这个例子中,我们创建了一个`MouseAdapter`子类,并重写了`mouseClicked`方法,以便在点击树节点时更新文本框`jtf`的内容。 ```java tree.addMouseListener(new MouseAdapter() { public void mouseClicked...

    Java目录树控件

    5. **TreeModel**: JTree的模型,负责处理数据的添加、删除和更改。默认情况下,可以使用DefaultTreeModel,通过传入根节点来初始化。 6. **事件监听**: JTree支持各种事件监听,如TreeSelectionListener,可以监听...

    Eclipse编写的简单树结构

    接着,我们可以实现树的添加、删除、查找等操作。例如,添加一个子节点的方法: ```java public void addChild(TreeNode child) { if (children == null) { children = new ArrayList(); } children.add(child)...

    java树组件作业.doc

    在这个例子中,它用于构建树形结构的数据模型。每个节点都可以包含任意对象,这里使用了自定义的`book` 类对象来存储书籍信息。 接下来,`JTree` 对象被创建并设置为刚才构建的数据模型。`JTree` 是一个可视化的...

    Java树形菜单的创建

    它可以容纳任意类型的数据,并且支持添加、删除和修改子节点。 2. **DefaultTreeModel** 类: - `DefaultTreeModel` 是 `TreeModel` 接口的具体实现,它定义了树的数据结构。通过这个类,我们可以创建和管理树的根...

    java 1.6 自带demo

    通过研究这个示例,你可以了解如何添加、删除节点,以及响应用户的点击事件。 `notepad` 示例则是一个简单的文本编辑器,它演示了如何利用Java的I/O流处理文件读写,以及如何结合Swing组件来构建一个功能完备的桌面...

    绝版JTreeTable源代码

    3. **DynamicTreeTableModel.java**:动态树表模型,可能用于处理数据的动态更新,如添加、删除和修改节点。 4. **Bookmarks.java**:可能是一个示例类,展示了如何将书签数据结构与JTreeTable集成,提供了一种实际...

    Java学习100天速成源程序.rar

    学习者将学习如何添加节点,以及如何处理用户的点击事件,这对于构建图形用户界面(GUI)的应用程序非常有用。 4. **Update1.java, Insert1.java, Delete.java**:这些文件可能与数据库操作相关,演示了如何使用...

Global site tag (gtag.js) - Google Analytics