`
Etwo
  • 浏览: 104401 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java中JTree添加树的节点的一个小例子

阅读更多

前段时间用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();
}
}




 
2
0
分享到:
评论

相关推荐

    JTree的例子,可以拖动节点

    这个例子展示了如何实现一个可拖动节点的`JTree`,这在用户界面设计中是一个常见且实用的功能,特别是在需要展示层次结构信息时。`JTree`允许用户通过拖放操作来重新排列节点,提高交互性和用户体验。 拖放(Drag ...

    java Swing JTree的教程实例

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

    Java JTree+JTable应用

    本项目是关于如何在Java应用程序中结合使用这两种组件的一个示例,特别强调了如何将`JTree`的节点内容动态地显示到`JTable`中。 首先,我们来看`JTree`。`JTree`是用来展示树状数据结构的组件,如文件系统目录结构...

    java中Jtree的使用

    Jtree的使用例子 这是类似qq的节点例子 帮助我们是简单地编码

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

    在这个例子中,我们创建了一个简单的两层树结构,并为每个叶子节点添加了复选框。`getTreeCellRendererComponent`方法重写用于根据节点类型(叶子节点或非叶子节点)返回不同的渲染组件。 此外,你可能还需要监听`...

    java组件之jtree使用

    首先展示一个简单的示例代码,用于创建一个空的`JTree`并将其添加到`JFrame`中: ```java import javax.swing.*; import java.awt.*; public class InitalTree { public InitalTree() { JFrame f = new JFrame(...

    jtree带复选框的例子

    "jtree带复选框的例子"是一个关于如何在JTree中实现节点选择功能的示例,其中每个节点都有一个复选框供用户进行选择。这种功能在需要用户对树形结构数据进行多选操作的场景下非常实用。 在这个例子中,关键的特性是...

    java Swing带复选框的树

    4. **CheckboxTreeCellRenderer**:这是一个特定的渲染器,用于在JTree节点上显示复选框。我们需要覆盖`getTreeCellRendererComponent`方法,创建并返回一个包含JCheckBox的组件。复选框的状态应根据节点的选中状态...

    (java) JTree控件的拖拽,拖动

    在上述代码中,`TreeTransferable`是一个自定义类,实现了`Transferable`接口,用于封装拖动的节点数据。`handleDrop`方法是处理目标位置的释放事件,通常会根据`DropTargetDropEvent`的参数来决定是否接受拖动,并...

    JAVA JTREE JTABLE实例代码

    JTree是Swing中的一个模型视图组件,它允许用户以树形结构来查看和操作数据。当你需要展示目录结构、文件系统或具有层次关系的对象时,JTree就非常适用。JTree可以动态地加载数据,支持单选和多选模式,还可以通过...

    JavaSwing中的JTree模型.pdf

    Java Swing 中的 JTree 是一个用于展示层次结构数据的组件,它使用类似文件系统目录的图形界面,由一系列节点组成,这些节点可以是文件夹或叶子节点。文件夹节点可以有子节点,而叶子节点没有。JTree 依赖于一个模型...

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

    在Java编程中,`JTree`是一个非常重要的组件,它被用于展示层次化的数据,比如文件系统、组织结构或者任何可以表示为树形结构的信息。本篇将详细讲解`JTree`的相关知识点,并通过实际例子进行练习。 首先,我们要...

    (一)如何使用JTree

    在这个例子中,我们创建了一个根节点,并添加了两个子节点。然后,我们使用这个模型实例化了JTree。 为了让JTree显示在GUI中,我们需要将其添加到容器,如JScrollPane: ```java JScrollPane scrollPane = new ...

    java swing tree树的懒加载

    4. **监听树的事件**:为了在节点展开时触发数据加载,你可以添加一个`TreeWillExpandListener`到`JTree`。当用户尝试展开节点时,`treeWillExpand()`方法会被调用,此时你可以在此加载对应的数据。 5. **异常处理*...

    jtree树应用

    在Java编程领域,JTree是Swing库中的一个重要组件,用于展示树形数据结构。它在用户界面设计中扮演着重要角色,特别是在处理文件系统、组织层次结构信息或表示复杂对象结构时。JTree的应用广泛且实用,让我们深入...

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

    在Java编程中,创建一个能够动态改变树节点的程序是一个常见的需求,特别是在构建用户界面或者数据结构演示时。本程序采用Swing库来构建GUI组件,并利用`DefaultMutableTreeNode`和`DefaultTreeModel`实现动态树结构...

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

    在Java编程中,`JTree`是一个用于展示层次数据的组件,它通常用于显示树状结构的数据。在给定的示例中,开发者遇到了一个问题,即使用默认的`Hashtable`作为`JTree`的构造参数时,节点并没有按照输入的顺序进行显示...

    如何使用JTree,JTree使用方法

    这个例子展示了如何创建一个基本的`JTree`并将其添加到`JFrame`中。`JScrollPane`的使用是为了能够滚动显示可能过大的树结构。 ##### 示例2:使用`Hashtable`创建`JTree` ```java public class TreeDemo1 { ...

    JTree设置不同图标

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

    JTree2.0

    **JTree2.0** 是一个Java Swing组件,主要用于在图形用户界面中展示层次结构的数据。这个组件在GUI应用中非常常见,特别是在文件系统管理、组织结构展示或树形菜单等场景下。JTree2.0相较于早期版本可能提供了一些...

Global site tag (gtag.js) - Google Analytics