<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    和風細雨

    世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運用之術自出。

    JTree樹控件的使用

    樹和節點的基本概念

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

    有關樹JTree的類和接口

    JTree                           顯示樹的核心基本類。
    TreeModel                  定義了樹的數據模型接口
    DefaultTreeModel      默認的樹模型接口實現類
    TreeModelListener     樹模型的事件監聽器
    TreePath                      樹路徑。一個路徑就是一個對象數組,對應于樹模型中從根節點到選定節點上的所有節點集合。數組的第一個元素是根節點,按樹的層次關系依次在數組中給出中間節點,最后一個元素是選定的節點。
    MutableTreeNode      樹節點接口。對應樹中的節點。樹節點接口定義了與父子節點有關的方法。因此,利用樹節點可以遍歷整棵樹。
    DedaultMutableTreeNode 默認的樹節點的實現類。
    TreeSelectionModel 定義了在樹上的選擇節點的數據模型接口。樹選擇模型決定了選擇節點的策略以及被選擇節點的信息。
    TreeSelectionModelListener 樹選擇模型事件的監聽器。

    代碼實例:構建一棵樹

    DefaultMutableTreeNode root = new DefaultMutableTreeNode("Java");

    DefaultMutableTreeNode j2seNode=new DefaultMutableTreeNode("J2SE(JavaSE)");
    DefaultMutableTreeNode swingNode=new DefaultMutableTreeNode("Swing");
    DefaultMutableTreeNode socketNode=new DefaultMutableTreeNode("Socket");
    DefaultMutableTreeNode threadNode=new DefaultMutableTreeNode("Thread");
    j2seNode.add(swingNode);
    j2seNode.add(socketNode);
    j2seNode.add(threadNode);

    DefaultMutableTreeNode j2eeNode=new DefaultMutableTreeNode("J2EE(JavaEE)");
    DefaultMutableTreeNode jspservletNode=new DefaultMutableTreeNode("Jsp/Servlet");
    DefaultMutableTreeNode jdbcNode=new DefaultMutableTreeNode("JDBC");
    DefaultMutableTreeNode javaMailNode=new DefaultMutableTreeNode("Java Mail");
    j2eeNode.add(jspservletNode);
    j2eeNode.add(jdbcNode);
    j2eeNode.add(javaMailNode);

    root.add(j2seNode);
    root.add(j2eeNode);
    tree = new JTree(root);


    相關語句解釋

    // 創建一個樹節點,文字為J2SE(JavaSE)
    DefaultMutableTreeNode j2seNode=new DefaultMutableTreeNode("J2SE(JavaSE)");

    // 創建一個文字為“Swing”的節點,添加在節點j2seNode下
    DefaultMutableTreeNode swingNode=new DefaultMutableTreeNode("Swing");
    j2seNode.add(swingNode);

    // 創建一個文字為Java的節點作為根節點,然后以此根節點構建一棵樹。j2seNode,j2eeNode掛在root 下
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("Java");
    .......
    root.add(j2seNode);
    root.add(j2eeNode);
    tree = new JTree(root);

    注意: JTree和JTextArea,JTable一樣,也需要放在一個JScrollPane中。

    給樹控件添加監聽

    tree.addTreeSelectionListener(new TreeSelectionListener() {
          public void valueChanged(TreeSelectionEvent evt) {
              //  取得選擇狀態變化的所有路徑
              TreePath[] paths = evt.getPaths();
     
              for (int i=0; i<paths.length; i++) {
                  // 如果處于選擇狀態
                  if (evt.isAddedPath(i)) {
                    // 將路徑轉化為節點數組
                    Object[] nodes=paths[i].getPath();
                   
                    // 得到最后一個節點,即選擇的節點
                    DefaultMutableTreeNode node=(DefaultMutableTreeNode)nodes[nodes.length-1];
                   
                    // 輸出節點名
                    System.out.println(node.toString());             
                  }
              }
          }
      });

    額外的一點美化工作:渲染節點

    // 設定葉節點圖標
    Icon leafIcon = new ImageIcon(TreePanel.class.getResource("/leaf.gif"));
    // 設定關閉狀態節點圖標
    Icon closedIcon = new ImageIcon(TreePanel.class.getResource("/close.gif"));
    // 設定打開狀態節點圖標
    Icon openIcon = new ImageIcon(TreePanel.class.getResource("/open.gif"));
     
    // 取得樹的渲染器
    DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer)tree.getCellRenderer();
    renderer.setLeafIcon(leafIcon);// 設定葉節點圖標
    renderer.setClosedIcon(closedIcon);// 設定關閉狀態節點圖標
    renderer.setOpenIcon(openIcon);// 設定打開狀態節點圖標

     

    posted on 2008-03-03 23:02 和風細雨 閱讀(2448) 評論(6)  編輯  收藏 所屬分類: Swing

    評論

    # re: JTree樹控件的使用 2008-04-06 11:43 藍狐

    喜歡的風格,能否交個朋友啊?我的MSN:zrz55661@hotmail.com  回復  更多評論   

    # re: JTree樹控件的使用 2008-04-06 15:46 和風細雨

    有朋自遠方來,不亦樂乎。msn已經加你了。  回復  更多評論   

    # re: JTree樹控件的使用[未登錄] 2008-04-10 13:28 JAVA初學者

    我也是JAVA開發的,能否交個朋友啊,我的MSN:tianjin_123@hotmail.com  回復  更多評論   

    # re: JTree樹控件的使用 2008-04-10 22:07 YANGH-7

    謝謝,我是Java初學者,現在學點Java Swing的東西,感到挺吃力,看了你講的關于JTree的東西,好理解多了,原來都在看文檔頭暈啊  回復  更多評論   

    # re: JTree樹控件的使用[未登錄] 2008-04-17 16:34 Lucifer

    和風細雨你好!看了你的博客我很振奮,xjynxf@hotmail.com我的MSN,很想跟你交朋友!請加我。  回復  更多評論   

    # re: JTree樹控件的使用 2009-05-18 16:49 來訪者

    你好,我想問你一下是否可以在葉子節點的內容部分用某個組件來表示。例如我想用一個帶有圖像和文字的組件來表示你例子中的Swing,如果方便的話,添加我的msn:wensheng2007@gmail.com  回復  更多評論   

    主站蜘蛛池模板: 亚洲中文字幕日本无线码| 亚洲精品在线免费看| 久久久亚洲精华液精华液精华液| 91精品手机国产免费| 亚洲国产成人久久综合一| 免费国产成人午夜在线观看| 国产AV无码专区亚洲AVJULIA| www一区二区www免费| 国产成人麻豆亚洲综合无码精品| 成人一区二区免费视频| 亚洲一区二区三区偷拍女厕 | 色屁屁在线观看视频免费| 永久免费观看的毛片的网站| 亚洲精品伊人久久久久| 日本高清免费不卡在线| 黄网站色视频免费观看45分钟| 国产L精品国产亚洲区久久 | 免费人成网站7777视频| yy一级毛片免费视频| 国产亚洲大尺度无码无码专线 | 亚洲人成人77777在线播放| 成年女人午夜毛片免费看| 日本亚洲高清乱码中文在线观看| 免费国产小视频在线观看| 国产精品hd免费观看| 久久久亚洲欧洲日产国码aⅴ| 天天影视色香欲综合免费| 亚洲国产精品久久久久秋霞小| 免费大片黄手机在线观看| 国产性生大片免费观看性| 久久久久亚洲AV无码网站| 成人黄软件网18免费下载成人黄18免费视频 | 国产成人精品免费午夜app| 亚洲综合欧美色五月俺也去| 亚洲AV日韩精品一区二区三区| 大地影院MV在线观看视频免费| 亚洲男女性高爱潮网站| 日日夜夜精品免费视频| 精品亚洲永久免费精品| 2020久久精品亚洲热综合一本 | 最新亚洲卡一卡二卡三新区|