import javax.swing.*; import javax.swing.tree.*; import javax.swing.event.*; import java.awt.*; public class TreeExpandEventDemo extends JApplet { DemoArea demoArea; JTextArea textArea; final static String newline = "\n"; public void init() { GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); JPanel contentPane = new JPanel(); contentPane.setLayout(gridbag); c.fill = GridBagConstraints.BOTH; c.gridwidth = GridBagConstraints.REMAINDER; c.weightx = 1.0; c.weighty = 1.0; c.insets = new Insets(1, 1, 1, 1); demoArea = new DemoArea(); gridbag.setConstraints(demoArea, c); contentPane.add(demoArea); c.insets = new Insets(0, 0, 0, 0); textArea = new JTextArea(); textArea.setEditable(false); JScrollPane scrollPane = new JScrollPane(textArea); scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); scrollPane.setPreferredSize(new Dimension(200, 75)); gridbag.setConstraints(scrollPane, c); contentPane.add(scrollPane); setContentPane(contentPane); } void saySomething(String eventDescription, TreeExpansionEvent e) { textArea.append(eventDescription + "; " + "path = " + e.getPath() + newline); } class DemoArea extends JScrollPane implements TreeExpansionListener { Dimension minSize = new Dimension(100, 100); JTree tree; public DemoArea() { TreeNode rootNode = createNodes(); tree = new JTree(rootNode); tree.addTreeExpansionListener(this); setViewportView(tree); } private TreeNode createNodes() { DefaultMutableTreeNode root; DefaultMutableTreeNode grandparent; DefaultMutableTreeNode parent; DefaultMutableTreeNode child; root = new DefaultMutableTreeNode("San Francisco"); grandparent = new DefaultMutableTreeNode("Potrero Hill"); root.add(grandparent); // parent = new DefaultMutableTreeNode("Restaurants"); grandparent.add(parent); child = new DefaultMutableTreeNode("Thai Barbeque"); parent.add(child); child = new DefaultMutableTreeNode("Goat Hill Pizza"); parent.add(child); // parent = new DefaultMutableTreeNode("Grocery Stores"); grandparent.add(parent); child = new DefaultMutableTreeNode("Good Life Grocery"); parent.add(child); child = new DefaultMutableTreeNode("Safeway"); parent.add(child); grandparent = new DefaultMutableTreeNode("Noe Valley"); root.add(grandparent); // parent = new DefaultMutableTreeNode("Restaurants"); grandparent.add(parent); child = new DefaultMutableTreeNode("Hamano Sushi"); parent.add(child); child = new DefaultMutableTreeNode("Hahn's Hibachi"); parent.add(child); // parent = new DefaultMutableTreeNode("Grocery Stores"); grandparent.add(parent); child = new DefaultMutableTreeNode("Real Foods"); parent.add(child); child = new DefaultMutableTreeNode("Bell Market"); parent.add(child); return root; } public Dimension getMinimumSize() { return minSize; } public Dimension getPreferredSize() { return minSize; } // Required by TreeExpansionListener interface. public void treeExpanded(TreeExpansionEvent e) { saySomething("Tree-expanded event detected", e); } // Required by TreeExpansionListener interface. public void treeCollapsed(TreeExpansionEvent e) { saySomething("Tree-collapsed event detected", e); } } }