`
lg_asus
  • 浏览: 191892 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JTree

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

public class JTreeDemo1 implements TreeModelListener{

	JLabel label = null;
	String nodeName = null;//原有節點名稱
	public JTreeDemo1(){
		JFrame jf = new JFrame("JTreeDemo1");
		Container contentPane = jf.getContentPane();
		
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("資源管理器");
		DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("我的公文包");
		DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("我的電腦");
		DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("收藏夾");
		DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("Readme");
		root.add(node1);
		root.add(node2);
		root.add(node3);
		root.add(node4);
		
		DefaultMutableTreeNode leafnode = new DefaultMutableTreeNode("公司文件");
		node1.add(leafnode);
		leafnode = new DefaultMutableTreeNode("私人文件");
		node1.add(leafnode);
		
		leafnode = new DefaultMutableTreeNode("本機磁盤C");
		node2.add(leafnode);
		leafnode = new DefaultMutableTreeNode("本機磁盤D");
		node2.add(leafnode);
		leafnode = new DefaultMutableTreeNode("本機磁盤E");
		node2.add(leafnode);

		leafnode = new DefaultMutableTreeNode("網站列表");
		node3.add(leafnode);
		leafnode = new DefaultMutableTreeNode("奇摩站");
		node3.add(leafnode);
		leafnode = new DefaultMutableTreeNode("網絡書店");
		node3.add(leafnode);
		
		JTree tree = new JTree(root);
		tree.setEditable(true);//設置樹可編輯
		tree.addMouseListener(new MouseHandle());
		DefaultTreeModel treeModel = (DefaultTreeModel)tree.getModel();
		treeModel.addTreeModelListener(this);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.getViewport().add(tree);
		//scrollPane.setViewportview(tree);
		
		label = new JLabel("更改數據為:");
		contentPane.add(scrollPane,BorderLayout.CENTER);
		contentPane.add(label,BorderLayout.SOUTH);
		jf.pack();
		jf.setVisible(true);
		jf.addWindowListener(new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
	}
	@Override
	public void treeNodesChanged(TreeModelEvent e){
		TreePath treePath = e.getTreePath();
		DefaultMutableTreeNode node = (DefaultMutableTreeNode)treePath.getLastPathComponent();//獲取樹枝節點
		System.out.println("node:"+node);
		try{
			int[] index = e.getChildIndices();
			System.out.println("枚舉子節點");
			for(int i=0;i<index.length;i++){
				System.out.println(index[i]);
			}
			node = (DefaultMutableTreeNode)node.getChildAt(index[0]);
			System.out.println("node:"+node);
		}catch(NullPointerException ne){
			label.setText("發生空指針異常");
		}
		label.setText(nodeName+"更改數據為:"+(String)node.getUserObject());
	}
	@Override
	public void treeNodesInserted(TreeModelEvent e){
		
	}
	@Override
	public void treeNodesRemoved(TreeModelEvent e){
		
	}
	@Override
	public void treeStructureChanged(TreeModelEvent e){
		
	}
	
	class MouseHandle extends MouseAdapter{
		@Override
		public void mousePressed(MouseEvent e){
			try{
				JTree tree = (JTree)e.getSource();
				int rowLocation = tree.getRowForLocation(e.getX(), e.getY());
				System.out.println("row:"+rowLocation);
				TreePath treePath = tree.getPathForRow(rowLocation);
				TreeNode treeNode = (TreeNode)treePath.getLastPathComponent();
				nodeName = treeNode.toString();
			}catch(NullPointerException ne){
				System.out.println("發生異常2");
			}
		}
	}
	
	public static void main(String...args){
		new JTreeDemo1();
	}
}



參考:深入淺出Java Swing程序設計
ps:用TreeModelEvent.getLastPathComponent取得DefaultMutableTreeNode節點為父節點,而不是用戶所選的節點,應該再加上node.getChildAt()來取得用戶真正所選的節點
但是通過JTree.getSelectionPath.getLastPathComponent()可以取得用戶所選的節點
分享到:
评论

相关推荐

    如何使用JTree,JTree使用方法

    ### 如何使用JTree:详解与实践 #### JTree简介 `JTree`是Java Swing中的一个组件,用于展示层次化的数据结构。它允许用户在应用程序中构建树形视图来表示目录结构、组织结构图等。`JTree`继承自`JComponent`类,...

    jtree

    在Java的Swing库中,`JTree`组件是一个用于展示层次数据的控件,它以树状结构显示数据。`jtree`标题所指的可能是关于如何在`JTree`中添加复选框(checkboxes)的功能。这通常是为了让用户能够多选树中的节点,进行...

    JTree的例子,可以拖动节点

    在Java Swing库中,`JTree`是一个非常重要的组件,用于显示和操作树形数据结构。这个例子展示了如何实现一个可拖动节点的`JTree`,这在用户界面设计中是一个常见且实用的功能,特别是在需要展示层次结构信息时。`...

    Java JTree+JTable应用

    在Java Swing库中,`JTree`和`JTable`是两种非常重要的组件,用于创建用户界面。`JTree`通常用于展示层次化的数据结构,而`JTable`则适用于二维表格数据的显示和操作。本项目是关于如何在Java应用程序中结合使用这两...

    JAVA JTREE JTABLE实例代码

    在Java Swing库中,JTree和JTable是两个非常重要的组件,它们被广泛用于构建用户界面,特别是处理数据展示和交互。JTree用于显示层次结构的数据,而JTable则适用于二维表格形式的数据展现。 首先,我们来深入了解...

    java使用jtree动态实现二叉树

    在Java编程中,`JTree`是Swing库中的一个组件,用于展示树形数据结构。这个组件在GUI(图形用户界面)应用中非常常见,因为它可以清晰地展示层次关系的数据,比如文件系统目录结构。在Java中动态实现二叉树,即在...

    JTree用法大全 swing java

    ### JTree用法详解:Swing中的树状结构控件 在Java Swing中,`JTree`是一个非常重要的组件,用于展示层次结构的数据,如文件系统、组织结构图等。本文将详细介绍`JTree`的各种使用方法,包括如何创建、自定义外观、...

    jTree和jTable 双向联动

    实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。

    jtree带复选框的例子

    在Java Swing库中,JTree是一个非常有用的组件,它用于展示层次结构的数据,例如文件系统、组织结构等。"jtree带复选框的例子"是一个关于如何在JTree中实现节点选择功能的示例,其中每个节点都有一个复选框供用户...

    JTree的实现代码

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

    Jtree

    在IT领域,JTree是一种广泛使用的Java Swing组件,它允许用户以树形结构来展示数据。这个组件在GUI(图形用户界面)应用中特别常见,因为它能清晰地组织层次化的信息,比如文件系统目录、数据库结构或者项目组织。...

    java Swing JTree的教程实例

    在Java Swing中,JTree是一个非常重要的组件,用于展示层次结构的数据,通常以树状的形式显示。它在各种用户界面中都有广泛的应用,例如文件系统浏览、组织结构展示等。本教程将深入讲解如何使用JTree以及相关的操作...

    java组件之jtree使用

    ### Java组件之JTree使用详解 #### 一、引言 `JTree`是Java Swing中的一个重要组件,用于展示层次化的数据结构。它提供了一种直观的方式来表示具有层级关系的数据,例如文件系统的目录结构或者组织架构等。本文将...

    JTree的用法

    ### JTree的用法详解 #### 一、引言 `JTree` 是 Java Swing 库中的一个重要组件,用于在图形用户界面 (GUI) 中显示层次结构数据。它非常适合用来展示具有分层关系的信息,例如文件系统目录结构、组织结构等。 ####...

    JTree(节点带有checkbox)代码实例

    在Java Swing库中,`JTree`组件是一个用于展示树形数据结构的可视化元素,它允许用户通过交互来浏览和操作这些数据。当我们在`JTree`中添加了复选框(CheckBox),我们增强了它的功能,使用户可以对每个节点进行选择...

    (一)如何使用JTree

    在Java Swing库中,JTree组件是一个非常有用的可视化控件,用于展示层次化的数据结构,如文件系统目录或组织结构图。这篇博文将探讨如何在Java应用程序中有效地使用JTree。 首先,理解JTree的基本概念至关重要。...

    JTree设置不同图标

    JTree设置不同图标 在 Java 中,JTree 是一个非常有用的组件,常用于显示树形结构的数据。但是,JAVA 自带的 JTree 功能狭窄,运用起来非常的不方便,不灵活。例如,在已经添加的节点中不能更改其文本信息和图片...

    JTree的Doc文档

    **JTree的Doc文档详解** Java Swing库中的`JTree`组件是用于显示和操作树状数据结构的可视化工具。这个组件允许用户以图形化的方式查看层次化的信息,如文件系统目录、数据库结构或者应用程序的对象模型。在Java...

    JTree2.0 目录树

    **JTree 2.0:构建直观的目录树视图** `JTree`是Java Swing库中的一个组件,用于在用户界面中展示层次结构数据,通常表现为目录树的形式。在`JTree2.0`版本中,这个组件得到了进一步的改进和增强,提供更丰富的功能...

Global site tag (gtag.js) - Google Analytics