java 动态tree_java树 JTree实例(可动态添加节点)

本文介绍如何使用Java实现动态创建JTree并动态添加节点。通过`DefaultMutableTreeNode`作为树的数据结构,利用`DefaultTreeModel`来管理和操作树模型。在示例中,当点击按钮时,会从预定义的数据数组中获取新的子节点并添加到树中。
摘要由CSDN通过智能技术生成

[java]代码库import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.tree.*;

class Branch {

DefaultMutableTreeNode r;

// DefaultMutableTreeNode是树的数据结构中的通用节点,节点也可以有多个子节点。

public Branch(String[] data) {

r = new DefaultMutableTreeNode(data[0]);

for (int i = 1; i < data.length; i++)

r.add(new DefaultMutableTreeNode(data[i]));

// 给节点r添加多个子节点

}

public DefaultMutableTreeNode node() {// 返回节点

return r;

}

}

public class Trees extends JPanel {

String[][] data = { { "Colors", "Red", "Blue", "Green" },

{ "Flavors", "Tart", "Sweet", "Bland" },

{ "Length", "Short", "Medium", "Long" },

{ "Volume", "High", "Medium", "Low" },

{ "Temperature", "High", "Medium", "Low" },

{ "Intensity", "High", "Medium", "Low" } };

static int i = 0; // I用于统计按钮点击的次数

DefaultMutableTreeNode root, child, chosen;

JTree tree;

DefaultTreeModel model;

public Trees() {

setLayout(new BorderLayout());

root = new DefaultMutableTreeNode("root");

// 根节点进行初始化

tree = new JTree(root);

// 树进行初始化,其数据来源是root对象

add(new JScrollPane(tree));

// 把滚动面板添加到Trees中

model = (DefaultTreeModel) tree.getModel();

// 获得数据对象DefaultTreeModel

JButton test = new JButton("Press me");

// 按钮test进行初始化

test.addActionListener(new ActionListener() {

// 按钮test注册监听器

public void actionPerformed(ActionEvent e) {

if (i < data.length) {

// 按钮test点击的次数小于data的长度

child = new Branch(data[i++]).node();

// 生成子节点

chosen = (DefaultMutableTreeNode)

// 选择child的父节点

tree.getLastSelectedPathComponent();

if (chosen == null)

chosen = root;

model.insertNodeInto(child, chosen, 0);

// 把child添加到chosen

}

}

});

test.setBackground(Color.blue);

// 按钮test设置背景色为蓝色

test.setForeground(Color.white);

// 按钮test设置前景色为白色

JPanel p = new JPanel();

// 面板p初始化

p.add(test);

// 把按钮添加到面板p中

add(p, BorderLayout.SOUTH);

// 把面板p添加到Trees中

}

public static void main(String args[]) {

JFrame jf = new JFrame("JTree demo");

jf.getContentPane().add(new Trees(), BorderLayout.CENTER);

// 把Trees对象添加到JFrame对象的中央

jf.setSize(200, 500);

jf.setVisible(true);

}

}

[代码运行效果截图]

8930a0c8195bdb2271436e1fdf8d6ca2.png

694748ed64b9390909c0d88230893790.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值