Java tutorial
/* Definitive Guide to Swing for Java 2, Second Edition By John Zukowski ISBN: 1-893115-78-X Publisher: APress */ import java.awt.BorderLayout; import java.awt.Font; import java.util.Vector; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.UIManager; public class ComponentHier { public static void main(String args[]) { JFrame frame = new JFrame("JComponent Hierarchy"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Font font = (Font) UIManager.get("Tree.font"); font = new Font(font.getFontName(), Font.BOLD, font.getSize() - 3); UIManager.put("Tree.font", font); Vector jEditorPaneVector = new NamedVector("JEditorPane", new Object[] { "JTextPane" }); Vector jTextFieldVector = new NamedVector("JTextField", new Object[] { "JPasswordField" }); Vector jTextComponentVector = new NamedVector("JTextComponent", new Object[] { jEditorPaneVector, "JTextArea", jTextFieldVector }); Vector jLayeredPaneVector = new NamedVector("JLayeredPane", new Object[] { "JDesktopPane" }); Vector jToggleButtonVector = new NamedVector("JToggleButton", new Object[] { "JCheckBox", "JRadioButton" }); Vector jMenuItemVector = new NamedVector("JMenuItem", new Object[] { "JCheckBoxMenuItem", "JMenu", "JRadioButtonMenuItem" }); Vector abstractButtonVector = new NamedVector("Abstract Button", new Object[] { "JButton", jMenuItemVector, jToggleButtonVector }); Object jComponentNodes[] = { abstractButtonVector, "JColorChooser", "JComboBox", "JFileChooser", "JInternalFrame", "JLabel", jLayeredPaneVector, "JList", "JMenuBar", "JOptionPane", "JPanel", "JPopupMenu", "JProgressBar", "JRootPane", "JScrollBar", "JScrollPane", "JSeparator", "JSlider", "JSplitPane", "JTabbedPane", "JTable", jTextComponentVector, "JToolBar", "JTree", "JViewPort" }; Vector jComponentVector = new NamedVector("JComponent", jComponentNodes); Object rootNodes[] = { jComponentVector }; Vector rootVector = new NamedVector("Root", rootNodes); JTree tree = new JTree(rootVector); tree.putClientProperty("JTree.lineStyle", "Angled"); JScrollPane scrollPane = new JScrollPane(tree); frame.getContentPane().add(scrollPane, BorderLayout.CENTER); frame.setSize(250, 480); frame.setVisible(true); } } class NamedVector extends Vector { String name; public NamedVector(String name) { this.name = name; } public NamedVector(String name, Object elements[]) { this.name = name; for (int i = 0, n = elements.length; i < n; i++) { add(elements[i]); } } public String toString() { return "[" + name + "]"; } }