/*
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 + "]";
}
}
|