Java如何使用JTree组件?

该示例介绍了如何使用JTreeswing组件创建层次结构数据的表示形式。可以在展开模式或折叠模式下查看分层数据。

要创建树的项目,我们DefaultMutableTreeNode在javax.swing.tree包中创建一个实例。此类实现TreeNodeandMutableTreeNode接口。可变意味着可以更改节点。可以添加新的子节点或从其父节点删除子节点。

在下面,我们创建一个树组件以显示有关星期几名称和月份名称的信息。该Root节点有Days和Months。该Days节点包含一个星期名称和Months节点包含月份名称。

package org.nhooo.example.swing;

import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import java.awt.*;
import java.text.DateFormatSymbols;

public class JTreeDemo extends JFrame {
    public JTreeDemo() {
        initializeUI();
    }

    private void initializeUI() {
        setSize(200, 400);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setLayout(new FlowLayout(FlowLayout.LEFT));

        // 创建日期名称的树节点。
        DefaultMutableTreeNode day = new DefaultMutableTreeNode("Days");
        DefaultMutableTreeNode sun = new DefaultMutableTreeNode("Sunday");
        DefaultMutableTreeNode mon = new DefaultMutableTreeNode("Monday");
        DefaultMutableTreeNode tue = new DefaultMutableTreeNode("Tuesday");
        DefaultMutableTreeNode wed = new DefaultMutableTreeNode("Wednesday");
        DefaultMutableTreeNode thu = new DefaultMutableTreeNode("Thursday");
        DefaultMutableTreeNode fri = new DefaultMutableTreeNode("Friday");
        DefaultMutableTreeNode sat = new DefaultMutableTreeNode("Saturday");

        // 将days节点添加到day tree节点。
        day.add(sun);
        day.add(mon);
        day.add(tue);
        day.add(wed);
        day.add(thu);
        day.add(fri);
        day.add(sat);

        // 使用for循环创建月份名称的树节点,其中
        // 使用DateFormatSymbols类获得月份名称。
        DefaultMutableTreeNode month = new DefaultMutableTreeNode("Months");
        String[] months = DateFormatSymbols.getInstance().getMonths();
        for (String monthName : months) {
            DefaultMutableTreeNode node = new DefaultMutableTreeNode(monthName);
            month.add(node);
        }

        // 为我们的JTree创建根节点并添加日和月项目
        // 到树上。
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
        root.add(day);
        root.add(month);

        // 使用以下实例创建JTree实例
        //DefaultMutableTreeNode。我们还为我们创建了一个滚动窗格
        // 树容器。
        JTree tree = new JTree(root);
        JScrollPane pane = new JScrollPane(tree);
        pane.setPreferredSize(new Dimension(150, 300));
        getContentPane().add(pane);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new JTreeDemo().setVisible(true);
            }
        });
    }
}