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节点添加到daytree节点。 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); } }); } }