The JTree Class

Now that you’ve seen all of the tree and node models and some of the default implementations, let’s look at the visual representation we can give them. The JTree class can build up trees out of several different objects, including a TreeModel. JTree extends directly from JComponent and just represents the visual side of any valid tree structure.

Here’s the source code that built the expression tree example in Figure 17.5. In this example, the init() method does all of the real work by creating a series of OpNode nodes and several Integer objects and connecting them in a valid expression. That tree model is passed to the JTree constructor, which in turn creates the component that we add to the content pane. Like many other components, JTree does not scroll automatically, so you would need to place it in a JScrollPane if you expected the tree to be large. (JTree implements Scrollable, which allows a JScrollPane to be intelligent about scrolling.)

// ExprTree1.java // An expression tree for holding algebraic expressions, built up using // ExpressionTreeModel for use with a JTree object. // import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.tree.*; import javax.swing.event.*; public class ExprTree1 extends JFrame implements TreeExpansionListener { JTree tree; ExpressionTreeModel treeModel; OpNode[] operators = new OpNode[4]; Integer[] operands = new Integer[5]; public ExprTree1() { super("Demo Expression Tree"); ...

Get Java Swing now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.