该示例介绍了如何使用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);
}
});
}
}