Título: Dibujar Arbol AVL Publicado por: JDtoar en 20 Abril 2008, 01:20 am Hola,
Tengo implementado un menú con las opciones de insertar, eliminar, buscar y recorrer un arbol AVL. Ahora quiero agregarle la opcion de que me lo dibuje, y es precisamente aqui donde no tengo muy claro los conceptos graficos de java. Tal vez lo pueda hacer con la libreria Graphics y un JFrame o en un canvas, pero no se que sera mejor. Me podrian por favor dar sugerencias de cual es la mejor manera para dibujar el arbol... gracias de antemano. Título: Re: Dibujar Arbol AVL Publicado por: Lu15_CL4 en 20 Abril 2008, 09:26 am eso depende de ti... usa lo que mejor sepas usar, java trae un objeto que te muestra los arboles igual que la organizacion de carpetas de windows, asi:
__ |__| | |___ ||__| |___ ||__| |___ ||__| | |___ | ||__| |___ ||__| javax.swing.JTree no recuerdo como se usa... U_u Título: Re: Dibujar Arbol AVL Publicado por: Sk9ITk5Z en 21 Abril 2008, 22:06 pm Mira si quieres mostrar algo en forma de arbol es con el JTREE que si tiens un buen IDE lo puedes jalar y arrastrar sino haslo con codigo... te dejo un ejmplo de como crear uno pero a qui tu le tienes que decile lso nombres de los nodos...espero ek te sirva de algo...
package EjemploJtree; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; public class ModelJTree extends JFrame { private JTree tree; private DefaultTreeModel model; private DefaultMutableTreeNode rootNode; public ModelJTree() { DefaultMutableTreeNode philosophersNode = getPhilosopherTree(); model = new DefaultTreeModel(philosophersNode); tree = new JTree(model); //*****************************Botones*************************************// JButton addButton = new JButton("Añadir Objeto"); addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { addPhilosopher(); } }); JButton removeButton = new JButton("Remover un objeto"); removeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { removeSelectedPhilosopher(); } }); JButton saveButton = new JButton("Guardar"); saveButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { saveSelectedPhilosopher(); } }); JButton cargaButton = new JButton("Abrir"); cargaButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { cargaSelectedPhilosopher(); } }); //*****************************Fin Botones*************************************// JPanel inputPanel = new JPanel(); inputPanel.add(addButton); inputPanel.add(removeButton); inputPanel.add(saveButton); inputPanel.add(cargaButton); Container container = getContentPane(); container.add(new JScrollPane(tree), BorderLayout.CENTER); container.add(inputPanel, BorderLayout.NORTH); setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(435, 300); setVisible(true); } private void addPhilosopher() { DefaultMutableTreeNode parent = getSelectedNode(); if (parent == null) { JOptionPane.showMessageDialog(ModelJTree.this, "Selecciona un area", "Error", JOptionPane.ERROR_MESSAGE); return; } String name = JOptionPane.showInputDialog(ModelJTree.this, "Dame el nombre:"); model.insertNodeInto(new DefaultMutableTreeNode(name), parent, parent.getChildCount()); } private void removeSelectedPhilosopher() { DefaultMutableTreeNode selectedNode = getSelectedNode(); if (selectedNode != null) model.removeNodeFromParent(selectedNode); } private void saveSelectedPhilosopher(){ DefaultMutableTreeNode selectedNode = getSelectedNode(); } private void cargaSelectedPhilosopher(){ DefaultMutableTreeNode selectedNode = getSelectedNode(); } private DefaultMutableTreeNode getSelectedNode() { return (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); } private DefaultMutableTreeNode getPhilosopherTree() { //String rai = JOptionPane.showInputDialog(ModelJTree.this, "Dame el nombre raiz:"); DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Transpote"); return rootNode; } public static void main(String args[]) { new ModelJTree(); } } Título: Re: Dibujar Arbol AVL Publicado por: JDtoar en 23 Abril 2008, 06:12 am Ok, muchas gracias por responder.
Finalmente lo hice con una libreria grafica llamada StdDraw que encontre en la red... de este modo lo pude realizar recursivo en un JFrame. |