View Single Post
  #2 (permalink)  
Old 01-17-2008, 07:36 AM
hardwired hardwired is online now
Senior Member
 
Join Date: Jul 2007
Posts: 1,141
hardwired is on a distinguished road
Code:
import java.awt.*; import java.awt.event.*; import java.util.Enumeration; import javax.swing.*; import javax.swing.tree.*; public class NodeExpansion implements ActionListener { JTree tree = new JTree(); public void actionPerformed(ActionEvent e) { String s = e.getActionCommand(); setExpandedState(s); } private void setExpandedState(String id) { DefaultMutableTreeNode root = (DefaultMutableTreeNode)tree.getModel().getRoot(); Enumeration e = root.breadthFirstEnumeration(); while(e.hasMoreElements()) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)e.nextElement(); if(node.getUserObject().equals(id)) { TreePath path = new TreePath(node.getPath()); if(node.isLeaf()) { DefaultMutableTreeNode parent = (DefaultMutableTreeNode)node.getParent(); expandNode(new TreePath(parent.getPath())); } else { expandNode(path); } tree.setSelectionPath(path); break; } } } private void expandNode(TreePath parent) { TreeNode node = (TreeNode)parent.getLastPathComponent(); if (node.getChildCount() >= 0) { Enumeration e = node.children(); while(e.hasMoreElements()) { TreeNode n = (TreeNode)e.nextElement(); TreePath path = parent.pathByAddingChild(n); expandNode(path); } } tree.expandPath(parent); } private JPanel getContent() { JPanel panel = new JPanel(new GridLayout(1,0)); panel.add(new JScrollPane(tree)); panel.add(getRightComponent()); return panel; } private JScrollPane getRightComponent() { ButtonGroup group = new ButtonGroup(); JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(2,5,2,0); gbc.weightx = 1.0; gbc.anchor = GridBagConstraints.WEST; gbc.gridwidth = GridBagConstraints.REMAINDER; TreeModel model = tree.getModel(); DefaultMutableTreeNode root = (DefaultMutableTreeNode)model.getRoot(); Enumeration e = root.breadthFirstEnumeration(); while(e.hasMoreElements()) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)e.nextElement(); String s = node.getUserObject().toString(); JRadioButton rb = new JRadioButton(s); rb.setActionCommand(s); rb.addActionListener(this); group.add(rb); panel.add(rb, gbc); } return new JScrollPane(panel); } public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new NodeExpansion().getContent()); f.setSize(500,400); f.setLocation(200,200); f.setVisible(true); } }
Reply With Quote