The example introduce you how to use the JTree
swing component to create a presentation of hierarchical data. The hierarchical data can be viewed in expand mode or collapse mode.
To create an item of the tree we create an instance of DefaultMutableTreeNode
which located in the javax.swing.tree
package. This class implements the TreeNode
and MutableTreeNode
interfaces. Mutable means that the node can be changed. It can be added new children node or deleted children node from their parent node.
Below we create a tree component to display information about week day names and the month names. The Root
node have the Days
and Months
. The Days
node contains a week day names and the Months
node contains the month names.
package org.kodejava.swing;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import java.awt.*;
import java.text.DateFormatSymbols;
public class JTreeDemo extends JFrame {
public JTreeDemo() {
initializeUI();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new JTreeDemo().setVisible(true));
}
private void initializeUI() {
setSize(500, 500);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setLayout(new FlowLayout(FlowLayout.LEFT));
// Creating tree node of day names.
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");
// Adding the day nodes into day tree node.
day.add(sun);
day.add(mon);
day.add(tue);
day.add(wed);
day.add(thu);
day.add(fri);
day.add(sat);
// Creates tree node of month names using a for loop where the
// month names is obtained using the DateFormatSymbols class.
DefaultMutableTreeNode month = new DefaultMutableTreeNode("Months");
String[] months = DateFormatSymbols.getInstance().getMonths();
for (String monthName : months) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(monthName);
month.add(node);
}
// Creating a root node for our JTree and add day and month items
// to the tree.
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
root.add(day);
root.add(month);
// Creating an instance of JTree using the instance of
// DefaultMutableTreeNode. We also create a scroll pane for our
// tree container.
JTree tree = new JTree(root);
JScrollPane pane = new JScrollPane(tree);
pane.setPreferredSize(new Dimension(250, 450));
getContentPane().add(pane);
}
}