熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

JTree樹控件

2013-11-23 19:05:43  來源: Java核心技術 

  樹和節點的基本概念
        樹可以用圖形的方式顯示眾多的節點以及它們之間的關系最常見的樹的例子就是目錄樹
        所有組成樹的元素都成為節點(Node)一棵樹的最頂層的節點稱為根節點如Program而沒有子節點的節點成為葉子節點如domain在層次結構中上層的節點是下層節點的父節點而下層節點是上層節點的子節點如圖Program是C# Programs和Programs的父節點FileBatchRemaer是C# Programes的子節點

        有關樹JTree的類和接口
        JTree                           顯示樹的核心基本類
        TreeModel                  定義了樹的數據模型接口
        DefaultTreeModel      默認的樹模型接口實現類
        TreeModelListener     樹模型的事件監聽器
        TreePath                      樹路徑一個路徑就是一個對象數組對應於樹模型中從根節點到選定節點上的所有節點集合數組的第一個元素是根節點按樹的層次關系依次在數組中給出中間節點最後一個元素是選定的節點
        MutableTreeNode      樹節點接口對應樹中的節點樹節點接口定義了與父子節點有關的方法因此利用樹節點可以遍歷整棵樹
        DedaultMutableTreeNode 默認的樹節點的實現類
        TreeSelectionModel 定義了在樹上的選擇節點的數據模型接口樹選擇模型決定了選擇節點的策略以及被選擇節點的信息
        TreeSelectionModelListener 樹選擇模型事件的監聽器
        代碼實例構建一棵樹
        DefaultMutableTreeNode root = new DefaultMutableTreeNode(Java);
        DefaultMutableTreeNode jseNode=new DefaultMutableTreeNode(JSE(JavaSE));
        DefaultMutableTreeNode swingNode=new DefaultMutableTreeNode(Swing);
        DefaultMutableTreeNode socketNode=new DefaultMutableTreeNode(Socket);
        DefaultMutableTreeNode threadNode=new DefaultMutableTreeNode(Thread);
        jseNodeadd(swingNode);
        jseNodeadd(socketNode);
        jseNodeadd(threadNode);
        DefaultMutableTreeNode jeeNode=new DefaultMutableTreeNode(JEE(JavaEE));
        DefaultMutableTreeNode jspservletNode=new DefaultMutableTreeNode(Jsp/Servlet);
        DefaultMutableTreeNode jdbcNode=new DefaultMutableTreeNode(JDBC);
        DefaultMutableTreeNode javaMailNode=new DefaultMutableTreeNode(Java Mail);
        jeeNodeadd(jspservletNode);
        jeeNodeadd(jdbcNode);
        jeeNodeadd(javaMailNode);
        rootadd(jseNode);
        rootadd(jeeNode);
        tree = new JTree(root);
   
        相關語句解釋
        // 創建一個樹節點文字為JSE(JavaSE)
        DefaultMutableTreeNode jseNode=new DefaultMutableTreeNode(JSE(JavaSE));
        // 創建一個文字為Swing的節點添加在節點jseNode下
        DefaultMutableTreeNode swingNode=new DefaultMutableTreeNode(Swing);
        jseNodeadd(swingNode);
        // 創建一個文字為Java的節點作為根節點然後以此根節點構建一棵樹jseNodejeeNode掛在root 下
        DefaultMutableTreeNode root = new DefaultMutableTreeNode(Java);
       
        rootadd(jseNode);
        rootadd(jeeNode);
        tree = new JTree(root);
        注意 JTree和JTextAreaJTable一樣也需要放在一個JScrollPane中
        給樹控件添加監聽
        treeaddTreeSelectionListener(new TreeSelectionListener() {
              public void valueChanged(TreeSelectionEvent evt) {
                  //  取得選擇狀態變化的所有路徑
                  TreePath[] paths = evtgetPaths();

  for (int i=; i<pathslength; i++) {
                      // 如果處於選擇狀態
                      if (evtisAddedPath(i)) {
                        // 將路徑轉化為節點數組
                        Object[] nodes=paths[i]getPath();

  // 得到最後一個節點即選擇的節點
                        DefaultMutableTreeNode node=(DefaultMutableTreeNode)nodes[nodeslength];

  // 輸出節點名
                        systemoutprintln(nodetoString());
                      }
                  }
              }
          });
        額外的一點美化工作渲染節點
        // 設定葉節點圖標
        Icon leafIcon = new ImageIcon(TreePanelclassgetResource(/leafgif));
        // 設定關閉狀態節點圖標
        Icon closedIcon = new ImageIcon(TreePanelclassgetResource(/closegif));
        // 設定打開狀態節點圖標
        Icon openIcon = new ImageIcon(TreePanelclassgetResource(/opengif));

  // 取得樹的渲染器
        DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer)treegetCellRenderer();
        renderersetLeafIcon(leafIcon);// 設定葉節點圖標
        renderersetClosedIcon(closedIcon);// 設定關閉狀態節點圖標
        renderersetOpenIcon(openIcon);// 設定打開狀態節點圖標


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26269.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.