前段时间用java做了一个QQ项目,也因为第一次做项目,当在做好友列表的时候不知道用什么好,就想到了jtree了,平时也没怎么用过jtree,花了几个小时去学习了一下,下面这个列子就是一个简单的jtree模式,个人觉得只要你懂得了怎么去操作,懂得怎样去添加一个节点和一片叶子,那么java中的这个树你也理解了差不多了吧...呵呵~下面贴出代码,供分享...
package net.etwo.jtree.example;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
public class TestMyJTree {
private JFrame jframeMain = new JFrame("我的java树");
private JPanel jpanelMain = new JPanel();
private JTree jtree;
// 设置此节点为根节点
private DefaultMutableTreeNode dmtmRoot = new DefaultMutableTreeNode("中国");
private DefaultMutableTreeNode dmtmSichuan = new DefaultMutableTreeNode(
"四川");
private DefaultMutableTreeNode dmtmChengdu = new DefaultMutableTreeNode(
"成都");
private DefaultMutableTreeNode dmtmDujiangyan = new DefaultMutableTreeNode(
"都江堰");
private DefaultMutableTreeNode dmtmChongQing = new DefaultMutableTreeNode(
"重庆");
private DefaultMutableTreeNode dmtmSPB = new DefaultMutableTreeNode("沙坪坝");
private DefaultMutableTreeNode dmtm;
private JScrollPane jspMain;
// 定义需要被拖动的某个节点
private TreePath movePath;
public void init() {
jtree = new JTree(dmtmRoot);
// 设置根节点是否可见,默认为可见
// jtree.setRootVisible(false);
jspMain = new JScrollPane(jtree);
dmtmRoot.add(dmtmSichuan);
dmtmRoot.add(dmtmSichuan);
dmtmChongQing.add(dmtmSPB);
dmtmSichuan.add(dmtmChengdu);
dmtmSichuan.add(dmtmDujiangyan);
dmtmRoot.add(dmtmChongQing);
for (int i = 0; i < 10; i++) {
dmtm = new DefaultMutableTreeNode(i);
dmtmRoot.add(dmtm);
}
// 设置其没有连线
jtree.putClientProperty("JTree.lineStyle", "None");
// 设置是否显现其根节点的图标
jtree.setShowsRootHandles(true);
jpanelMain.setLayout(new BorderLayout());
jpanelMain.add(jspMain);
jframeMain.add(jpanelMain);
jframeMain.pack();
jframeMain.setLocationRelativeTo(null);
jframeMain.setSize(264, 400);
jframeMain.setDefaultCloseOperation(jframeMain.EXIT_ON_CLOSE);
jframeMain.setVisible(true);
// 设置可以编辑
jtree.setEditable(true);
// 添加鼠标事件
MouseListener ml = new MouseAdapter() {
// 定义要被拖动的TreePath 来获取某个节点
TreePath tp;
// 鼠标按下的时候
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
// super.mousePressed(e);
// 获取某个节点 并 //返回指定位置的节点
tp = jtree.getPathForLocation(e.getX(), e.getY());
if (tp != null) {
movePath = tp;// 指定要拖动的节点
}
}
// 当鼠标松开的时候
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
// super.mouseReleased(e);
// 鼠标松开的时候获取指定位置的节点
tp = jtree.getPathForLocation(e.getX(), e.getY());
if (tp != null && movePath != null) {
// 阻止向子节点拖动 并且 拖动到的不是本身
if (movePath.isDescendant(tp) && movePath != tp) {
System.out.println("非法操作");
return;
}
// 不是向子节点拖动,也不是拖动到同一个节点
else if (movePath != tp) {
// 打印被拖动到的最后节点
System.out.println(tp.getLastPathComponent());
// add方法可以先将原节点从原父节点删除,再添加到新父节点中去
// 得到最后一个节点
DefaultMutableTreeNode dmtnLastPath = (DefaultMutableTreeNode) tp
.getLastPathComponent();
// 得到鼠标点击时的节点
DefaultMutableTreeNode dmtnFirstPath = (DefaultMutableTreeNode) movePath
.getLastPathComponent();
// 加节点
dmtnLastPath.add(dmtnFirstPath);
// 更新
jtree.updateUI();
}
}
}
};
jtree.addMouseListener(ml);
}
public static void main(String[] args) {
new TestMyJTree().init();
}
}
分享到:
相关推荐
JTree的例子,可以拖动节点 JTree的例子,可以拖动节点
java使用jtree动态实现二叉树,包含二叉树的插入删除很查找
jtree添加图片--(不同的节点图片),源代码,欢迎学习。
Jtree的使用例子 这是类似qq的节点例子 帮助我们是简单地编码
java Swing JTree的教程实例,很适合初学者,非常经典,在很多地方都需要用到这种树的结构,只要是程序员,都应该熟悉这种树结构。
JTree上的每一个节点就代表一个TreeNode对象,TreeNode本身是一个Interface,里面定义了7个有关节点的方法,例如判断是否 为树叶节点、有几个子节点(getChildCount())、父节点为何(getparent())等等、这些方法的定义...
java JTree+JTable使用样例,实现将JTree的节点内容显示到JTable中,eclipse导入maven项目 maven编译: mvn clean package
jtree目录树,学习目录树的同学可以参考参考,js实现的,可以动态的无限添加目录树节点,非常方便
java代码-使用java解决JTree访问XML的源代码 ——学习参考资料:仅用于个人学习使用!
java代码-使用java解决JTree文件浏览的源代码
JAVA中的Swing的JTree操作的宝典, 对树节点的增 删 改 查
java中的关于jtree编程的详细介绍,通过jtree的使用,掌握模型设计的核心技术,同时丰富了java界面的美观度和实用度。
java代码-使用java解决JTree JSON的源代码 ——学习参考资料:仅用于个人学习使用!
jtree节点可编辑
java组件之jtree使用 10-1:使用JTree组件: 10-2:以Hashtable构造JTree: 10-3:以TreeNode构造JTree: . . . . 10-8:JTree的其他操作:
JAVA JTREE实例代码、JAVA JTABLE实例代码
java中树形控件的拖拽 拖放监听,实现各节点间的拖拽
//判断节点是否被选中,被选中为0,没被选中为1 TreePath[] selectionPath = tree.getSelectionPaths();//获取所有被选中节点的路径 StringBuilder sb = new StringBuilder(); sb.append("<html><...
JTree 树形菜单插件包下载,在网页上快速实现树控菜单的一个小插件,功能相对完善,本次更新功能:加入treeNodes(数组形式),通过treeNodes可以对指定的子树进行收缩和展开功能,查找指定节点的功能。加入这个功能...
jtree带复选框的 很典型的例子 当子节点有一个没有被选中时 父节点及其父父结点均不会被选中