C語言中文網 目錄
首頁 > Java Swing 閱讀:1,550

Java Swing JTree:樹組件

< 上一頁Swing表格 Swing選項卡下一頁 >

如果要顯示一個層次關系分明的一組數據,用樹結構是最合適的。如同 Windows 資源管理器的左半部,可通過單擊文件夾展開或者收縮內容。

Swing 使用 JTree 類實現樹,它的主要功能是把數據按照樹狀進行顯示,其數據來源于其他對象。JTree 樹中最基本的對象叫作節點,表示在給定層次結構中的數據項。樹以垂直方式顯示數據,每行顯示一個節點。樹中只有一個根節點,所有其他節點從這里引出。除根節點外,其他節點分為兩類:一類是代子節點的分支節點,另一類是不帶子節點的葉節點。

JTree 類的常用構造方法如下表所示。
表1 JTree 類的常用構造方法
構造方法 說明
JTree() 返回帶有示例模型的 JTree
JTree(Object[] value) 返回 JTree,指定數組的每個元素作為不被顯示的新根節點的子節點
JTree(TreeNode root) 返回 JTree,使用指定的 root 作為其根節點
JTree(TreeNode root,boolean aslcsAllowsChildren) 返回 JTree,使用指定的 root 作為其根節點,asksAllowsChildren 用
于確定節點是否為葉節點

樹節點由 javax.swing.tree 包中的接口 TreeNode 定義,該接口被 DefaultMutableTreeNode 類實現。

為了創建一個樹,使用 DefaultMutableTreeNode 類為樹創建節點,它的兩個常用的構造方法如下。
  1. DefaultMutableTreeNode(Object userObject):創建沒有父節點和子節點,但允許有子節點的樹節點,并使用指定的用戶對象對它進行初始化。
  2. DefaultMutableTreeNode(Object userObject,boolean allowsChildren):創建沒有父節點和子節點的樹節點,使用指定的用戶對象對它進行初始化,僅在指定時才允許有子節點。

例 1

節點是樹結構中最主要的元素,因此對節點操作是樹結構最重要的操作。下面這個實例將介紹如何使用樹 JTree 對象和節點對象創建簡單的樹型界面。該實例代碼如下:
package ch18;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
public class JTreeDemo
{
    public static void main(String[] agrs)
    {
        JFrame frame=new JFrame("教師學歷信息");
        frame.setSize(330,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(new JTreeDemo().createComponent());
        frame.pack();
        frame.setVisible(true);
    }
    private JPanel createComponent()
    {
        JPanel panel=new JPanel();
        DefaultMutableTreeNode root=new DefaultMutableTreeNode("教師學歷信息");
        String Teachers[][]=new String[3][];
        Teachers[0]=new String[]{"王鵬","李曼","韓小國","穆保齡","尚凌云","范超峰"};
        Teachers[1]=new String[]{"胡會強","張春輝","宋芳","陽芳","朱山根","張茜","宋媛媛"};
        Teachers[2]=new String[]{"劉丹","張小芳","劉華亮","聶來","吳瓊"};
        String gradeNames[]={"碩士學歷","博士學歷","博士后學歷"};
        DefaultMutableTreeNode node=null;
        DefaultMutableTreeNode childNode=null;
        int length=0;
        for(int i=0;i<3;i++)
        {
            length=Teachers[i].length;
            node=new DefaultMutableTreeNode(gradeNames[i]);
            for (int j=0;j<length;j++)
            {
                childNode=new DefaultMutableTreeNode(Teachers[i][j]);
                node.add(childNode);
            }
            root.add(node);
        }
        JTree tree=new JTree(root);
        panel.add(tree);
        panel.setVisible(true);
        return panel;
    }
}

在該實例中,創建樹型界面的具體工作是由 createComponent() 私有方法完成的。在該方法中,首先創建一個根節點 root,接著定義兩個數組來存放節點中的文本信息,然后通過嵌套 for 循環語句來創建除根節點外的所有節點并添加到對應的父節點上。最后把這些父節點添加到根節點中,該實例的運行效果如圖 1 所示。

教師學歷信息運行效果
圖1 教師學歷信息運行效果
< 上一頁Swing表格 Swing選項卡下一頁 >

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo