javatree,javatreeset排序

本文目錄一覽:

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-hant/n/237935.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:08
下一篇 2024-12-12 12:08

發表回復

登錄後才能評論