// SE MUESTRA LA IMPLEMENTACION DE ARBOLES EN CASCADA import java.awt.*; import java.awt.event.*; import com.sun.java.swing.*; import javax.swing.event.*; import javax.swing.tree.*; import javax.swing.*; public class SwingTree extends JFrame { public static int WIDTH = 400; public static int HEIGHT = 400; public static String TITLE = "SwingTree"; Container frameContainer; JTextField textField = new JTextField(); JScrollPane scrollPane = new JScrollPane(); JTree tree; Renderer renderer = new Renderer(); DefaultMutableTreeNode tipos = new DefaultMutableTreeNode("Tipos de Numeros"); DefaultMutableTreeNode enteros = new DefaultMutableTreeNode("Numeros enteros"); DefaultMutableTreeNode flotantes = new DefaultMutableTreeNode("Numeros flotante"); DefaultMutableTreeNode uno = new DefaultMutableTreeNode("1"); DefaultMutableTreeNode dos = new DefaultMutableTreeNode("2"); DefaultMutableTreeNode tres = new DefaultMutableTreeNode("3"); DefaultMutableTreeNode cuatro = new DefaultMutableTreeNode("4"); DefaultMutableTreeNode cinco = new DefaultMutableTreeNode("5"); DefaultMutableTreeNode dos_2 = new DefaultMutableTreeNode("2.2"); DefaultMutableTreeNode tres_3 = new DefaultMutableTreeNode("3.3"); DefaultMutableTreeNode cuatro_4 = new DefaultMutableTreeNode("4.4"); DefaultMutableTreeNode cinco_5 = new DefaultMutableTreeNode("5.5"); DefaultMutableTreeNode uno_1 = new DefaultMutableTreeNode("1.1"); JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("Archivo"); JMenuItem fileExit = new JMenuItem("Salir"); public SwingTree() { super(TITLE); buildGUI(); setupEventHandlers(); setSize(WIDTH,HEIGHT); setVisible(true); } void buildGUI() { setupMenuBar(); setupTree(); layoutComponents(); } void setupMenuBar() { fileMenu.add(fileExit); menuBar.add(fileMenu); setJMenuBar(menuBar); } void setupTree() { tipos.add(enteros); tipos.add(flotantes); enteros.add(uno); enteros.add(dos); enteros.add(tres); enteros.add(cuatro); enteros.add(cinco); flotantes.add(uno_1); flotantes.add(dos_2); flotantes.add(tres_3); flotantes.add(cuatro_4); flotantes.add(cinco_5); tree = new JTree(tipos); } public void layoutComponents() { frameContainer = getContentPane(); frameContainer.setLayout(new BorderLayout()); tree.setCellRenderer(renderer); tree.addTreeSelectionListener(new TreeHandler()); scrollPane.getViewport().add(tree); frameContainer.add("Center",scrollPane); frameContainer.add("South",textField); } void setupEventHandlers() { addWindowListener(new WindowHandler()); fileExit.addActionListener(new MenuItemHandler()); } public static void main(String[] args) { SwingTree app = new SwingTree(); } public class WindowHandler extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } public class MenuItemHandler implements ActionListener { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if(cmd.equals("Salir")) System.exit(0); } } public class TreeHandler implements TreeSelectionListener { public void valueChanged(TreeSelectionEvent e) { TreePath path = e.getPath(); String text = path.getPathComponent( path.getPathCount()-1).toString(); if(path.getPathCount()>3) { text += ": "; text += Integer.toString((int)(Math.random()*50))+" Entero "; text += Integer.toString((int)(Math.random()*50))+" Decimal"; } textField.setText(text); } } class Renderer extends JLabel implements TreeCellRenderer { public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { setText(value.toString()+" "); return this; } } }