// 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;
}
}
}