<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 和風細雨 閱讀(2447) 評論(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  回復  更多評論   

    主站蜘蛛池模板: 秋霞人成在线观看免费视频| 午夜两性色视频免费网站| 美景之屋4在线未删减免费| 国产福利免费观看| 中文字幕在线观看免费| 亚洲福利中文字幕在线网址| a毛片全部播放免费视频完整18| 亚洲欧洲日韩国产| 国产18禁黄网站免费观看| 久久久久久久99精品免费观看| 国产亚洲人成网站观看| a级午夜毛片免费一区二区| 亚洲天堂电影在线观看| 亚洲精品国产精品乱码不卞| 1000部拍拍拍18勿入免费视频下载| 亚洲av成人中文无码专区| 亚洲av无码片在线播放| 日本免费一区二区三区| 亚洲精品色在线网站| 亚洲国产精品不卡毛片a在线| 99精品视频免费观看| 香蕉视频免费在线| 亚洲人成电影在线观看青青| 亚洲色一色噜一噜噜噜| 免费看男人j放进女人j免费看| 亚洲av中文无码乱人伦在线观看| 亚洲尹人九九大色香蕉网站| 亚洲高清成人一区二区三区 | yellow视频免费在线观看| 一本色道久久综合亚洲精品高清| 东方aⅴ免费观看久久av| 亚洲一区二区观看播放| 亚洲日本精品一区二区| 久久精品国产亚洲AV不卡| 四虎影视免费在线| 国产成人精品免费视| 免费国产在线视频| 国产高清视频免费在线观看 | 久久国产精品免费看| av午夜福利一片免费看久久| 久久亚洲中文字幕无码|