Personal tools
Document Actions

TreeTable

by Victor Acevedo last modified 2010-06-01 22:52

Conjunto de clases, clases abstractas e interfaces para añadir un árbol de elementos a un panel.

Conjunto de clases abstractas e interfaces que se usan para la creación de árboles de opciones en extensiones de gvSIG. Un árbol de opciones es un tipo de menú en el que existen nodos padres e hijos. El origen es un nodo raíz, estableciéndose de este modo una jerarquía con las propiedades típicas de los árboles como estructuras de datos que se hayan querido implementar (no pueden existir ciclos, por ejemplo). El árbol está incluido en un panel donde se muestra. El conjunto de clases, clases abstractas e interfaces que forman parte de este paquete de herramientas para desarrolladores son:

  • AbstractCellEditor.
  • TreeTableCellEditor.
  • TreeTable.
  • TreeTableModelAdapater.
  • TreeTableCellRenderer.
  • AbstractTreeTableModel.
  • TreeModel.
  • TreeTableModel.
  • MergeSort. Clase para ordenar un conjunto de elementos

A continuación se muestra un ejemplo de utilización y extensión de estas herramientas para implementar un árbol de CheckBox.

El desarrollador a utilizado las clases proporcionadas, extendiéndolas para poder incluir CheckBox como elementos del árbol. Ha extendido la clase TreeTableModel para crear AttributesTreeTableModel y de ahí ya la clase necesaria para poder utilizar CheckBox, en este caso TreeTableModelWithCheckBoxes. Se ha implementado de tal forma para que en el panel aparezcan dos columnas en la primera el árbol y en la segundo un string en el que se indica el tipo del elemento adjunto en el árbol. Además mantiene el sitema de herencia, es decir, si se selecciona un nodo padre en el checkbox correspondiente, automáticamente se seleccionan todos los nodos hijos. El resultado ha sido el que se muestra en las imágenes.

imagenes/TreeTable1.JPG

Árbol comprimido.

imagenes/TreeTable2.JPG

Árbol totalmente desplegado.

imagenes/TreeTable3.JPG

Imágen que muestra lo que sucede cuando se selecciona un nodo padre.

El código necesario para realizar esta tarea es el siguiente.

Constructor de la clase de Test

 AttributesTableTest att = new AttributesTableTest();

 // Construimos un vector a partir de unos datos recogidos en un fichero XML

 Vector att = describeFeatureType();

 // Creamos el modelo con CheckBoxes al que se le pasa el vector anterior
 
 TreeTableModelWithCheckBoxes model = new TreeTableModelWithCheckBoxes(att.get(0));

 // Creamos un JTree con el modelo anterior

 JTree tree = new JTree(model);                

// Y por último creamos el Frame con el árbol
       
 JFrame f = new JFrame();
 f.addWindowListener(new java.awt.event.WindowAdapter() {
           public void windowClosing(java.awt.event.WindowEvent evt) {
               System.exit(0);
           }
       }
 );
 f.getContentPane().add(tree);     
 f.setBounds(0,0,600,500);
 f.setVisible(true);

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: