本文目錄一覽:
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/zh-tw/n/237935.html
微信掃一掃
支付寶掃一掃