本文目录一览:
java Tree 怎么获得父节点的值。?SWT做的tree
TreeItem parentItem=item.getParentItem();得到父节点
Tree tree= item.getParent();得到树
parentItem.getText();节点显示的值
parentItem.getData();item上保存的数据
Java怎么实现输出是一个tree结构
树节点类:
package cn.com.tree;
public class Node {
private Integer id;
private Integer parentId;
private String name;
private String link;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getParentId() {
return parentId;
}
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
}
输出树形菜单类:
package cn.com.tree;
import java.util.ArrayList;
import java.util.List;
public class Tree {
private StringBuffer html = new StringBuffer();
private ListNode nodes;
public Tree(ListNode nodes){
this.nodes = nodes;
}
public String buildTree(){
html.append(“ul”);
for (Node node : nodes) {
Integer id = node.getId();
if (node.getParentId() == null) {
html.append(“\r\nli id='” + id + “‘” + node.getName()+ “/li”);
build(node);
}
}
html.append(“\r\n/ul”);
return html.toString();
}
private void build(Node node){
ListNode children = getChildren(node);
if (!children.isEmpty()) {
html.append(“\r\nul”);
for (Node child : children) {
Integer id = child.getId();
html.append(“\r\nli id='” + id + “‘” + child.getName()+ “/li”);
build(child);
}
html.append(“\r\n/ul”);
}
}
private ListNode getChildren(Node node){
ListNode children = new ArrayListNode();
Integer id = node.getId();
for (Node child : nodes) {
if (id.equals(child.getParentId())) {
children.add(child);
}
}
return children;
}
}
测试类:
package zzj.test;
import java.util.ArrayList;
import java.util.List;
import cn.com.tree.Node;
import cn.com.tree.Tree;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
ListNode nodes = new ArrayListNode();
Node node1 = new Node();
node1.setId(1);
node1.setName(“node1”);
node1.setParentId(null);
node1.setLink(null);
nodes.add(node1);
Node node11 = new Node();
node11.setId(11);
node11.setName(“node11”);
node11.setParentId(1);
node11.setLink(null);
nodes.add(node11);
Node node111 = new Node();
node111.setId(111);
node111.setName(“node111”);
node111.setParentId(11);
node111.setLink(null);
nodes.add(node111);
Node node12 = new Node();
node12.setId(12);
node12.setName(“node12”);
node12.setParentId(1);
node12.setLink(null);
nodes.add(node12);
Node node2 = new Node();
node2.setId(2);
node2.setName(“node2”);
node2.setParentId(null);
node2.setLink(null);
nodes.add(node2);
Node node21 = new Node();
node21.setId(21);
node21.setName(“node21”);
node21.setParentId(2);
node21.setLink(null);
nodes.add(node21);
Node node3 = new Node();
node3.setId(3);
node3.setName(“node3”);
node3.setParentId(null);
node3.setLink(null);
nodes.add(node3);
Tree tree = new Tree(nodes);
System.out.println(tree.buildTree());
}
}
java的JTree的使用方法,
JTree组件被用来以树的形式显示数据,一层套一层,看起来清晰明了,使用户很方便地就了解到各个节点之间的层次关系,可以很容易地找到相关的数据。
例如 Windows 系统的文件管理器,它就是一个典型的树层次结构。
JTree的构造函数:
·JTree() 建立一棵默认的树。
·JTree(Hashtable data) 利用Hashtable建立树。
·JTree(Object[] data) 利用数组建立树。
·JTree(TreeModel model) 利用TreeModel建立树。
·JTree(TreeNode root) 建立以root为根的树。
·JTree(TreeNode root,Boolean children) 建立以 root 为根的树,并设定是否允许有子节点。
·JTree(Vector value) 利用Vector建立树。
使用一个JTree可以简单地像下面这样表示:
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
public class TreeDemo {
public static void main(String[] args) {
// 创建没有父节点和子节点、但允许有子节点的树节点,并使用指定的用户对象对它进行初始化。
// public DefaultMutableTreeNode(Object userObject)
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(“软件部”);
node1.add(new DefaultMutableTreeNode(new User(“小花”)));
node1.add(new DefaultMutableTreeNode(new User(“小虎”)));
node1.add(new DefaultMutableTreeNode(new User(“小龙”)));
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode(“销售部”);
node2.add(new DefaultMutableTreeNode(new User(“小叶”)));
node2.add(new DefaultMutableTreeNode(new User(“小雯”)));
node2.add(new DefaultMutableTreeNode(new User(“小夏”)));
DefaultMutableTreeNode top = new DefaultMutableTreeNode(“职员管理”);
top.add(new DefaultMutableTreeNode(new User(“总经理”)));
top.add(node1);
top.add(node2);
final JTree tree = new JTree(top);
JFrame f = new JFrame(“JTreeDemo”);
f.add(tree);
f.setSize(300, 300);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 添加选择事件
tree.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
if (node == null)
return;
Object object = node.getUserObject();
if (node.isLeaf()) {
User user = (User) object;
System.out.println(“你选择了:” + user.toString());
}
}
});
}
}
class User {
private String name;
public User(String n) {
name = n;
}
// 重点在toString,节点的显示文本就是toString
public String toString() {
return name;
}
}
java中的tree是什么意思
树状结构,常用于菜单,或是文件管理等等具有层次关系的内容;
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/237935.html
微信扫一扫
支付宝扫一扫