GWT: widget de árbol

Introducción

los Treewidget representa un widget de árbol jerárquico estándar. El árbol contiene una jerarquía de TreeItems que el usuario puede abrir, cerrar y seleccionar.

Declaración de clase

A continuación se muestra la declaración de com.google.gwt.user.client.ui.Tree clase -

public class Tree
   extends Widget
      implements HasWidgets, SourcesTreeEvents, HasFocus,
         HasAnimation, HasAllKeyHandlers, HasAllFocusHandlers, 
            HasSelectionHandlers<TreeItem>, HasOpenHandlers<TreeItem>, 
               HasCloseHandlers<TreeItem>, SourcesMouseEvents, HasAllMouseHandlers

Reglas de estilo CSS

Las siguientes reglas de estilo CSS predeterminadas se aplicarán a todo el widget de árbol. Puede anularlo según sus requisitos.

.gwt-Tree {}

.gwt-TreeItem {}

.gwt-TreeItem-selected {}

Constructores de clases

No Señor. Constructor y descripción
1

Tree()

Construye un árbol vacío.

2

Tree(TreeImages images)

Construye un árbol que usa el paquete de imágenes especificado para las imágenes.

3

Tree(TreeImages images, boolean useLeafImages)

Construye un árbol que usa el paquete de imágenes especificado para las imágenes.

Métodos de clase

No Señor. Nombre y descripción de la función
1

void add(Widget widget)

Agrega el widget como elemento de árbol raíz.

2

void addFocusListener(FocusListener listener)

Agrega una interfaz de escucha para recibir eventos del mouse.

3

TreeItem addItem(java.lang.String itemText)

Agrega un elemento de árbol simple que contiene el texto especificado.

4

void addItem(TreeItem item)

Agrega un elemento al nivel de raíz de este árbol.

5

TreeItem addItem(Widget widget)

Agrega un nuevo elemento de árbol que contiene el widget especificado.

6

void addKeyboardListener(KeyboardListener listener)

Agrega una interfaz de escucha para recibir eventos de teclado.

7

void addMouseListener(MouseListener listener)

8

void addTreeListener(TreeListener listener)

Agrega una interfaz de escucha para recibir eventos de árbol.

9

void clear()

Borra todos los elementos del árbol del árbol actual.

10

protected void doAttachChildren()

Si un widget implementa HasWidgets, debe anular este método y llamar a onAttach () para cada uno de sus widgets secundarios.

11

protected void doDetachChildren()

Si un widget implementa HasWidgets, debe anular este método y llamar a onDetach () para cada uno de sus widgets secundarios.

12

void ensureSelectedItemVisible()

Asegura que el elemento seleccionado actualmente sea visible, abriendo sus padres y desplazándose por el árbol según sea necesario.

13

java.lang.String getImageBase()

Obsoleto. Use Tree (TreeImages), ya que proporciona una forma más eficiente y manejable de suministrar un conjunto de imágenes que se utilizarán dentro de un árbol.

14

TreeItem getItem(int index)

Obtiene el elemento de árbol de nivel superior en el índice especificado.

15

int getItemCount()

Obtiene el número de elementos contenidos en la raíz de este árbol.

dieciséis

TreeItem getSelectedItem()

Obtiene el elemento seleccionado actualmente.

17

int getTabIndex()

Obtiene la posición del widget en el índice de la pestaña.

18

boolean isAnimationEnabled()

19

protected boolean isKeyboardNavigationEnabled(TreeItem currentItem)

Indica si la navegación por teclado está habilitada para el árbol y para un elemento de árbol determinado.

20

java.util.Iterator<Widget> iterator()

Obtiene un iterador para los widgets contenidos.

21

void onBrowserEvent(Event event)

Se activa cada vez que se recibe un evento del navegador.

22

protected void onEnsureDebugId(java.lang.String baseID)

Elementos afectados: -root = La raíz TreeItem.

23

protected void onLoad()

Este método se llama inmediatamente después de que un widget se adjunta al documento del navegador.

24

boolean remove(Widget w)

Elimina un widget secundario.

25

void removeFocusListener(FocusListener listener)

Elimina una interfaz de escucha agregada anteriormente.

26

void removeItem(TreeItem item)

Elimina un elemento del nivel raíz de este árbol.

27

void removeItems()

Elimina todos los elementos del nivel raíz de este árbol.

28

void removeKeyboardListener(KeyboardListener listener)

Elimina una interfaz de escucha agregada anteriormente.

29

void removeTreeListener(TreeListener listener)

Elimina una interfaz de escucha agregada anteriormente.

30

void setAccessKey(char key)

Establece la 'clave de acceso' del widget.

31

void setAnimationEnabled(boolean enable)

Habilita o deshabilita las animaciones.

32

void setFocus(boolean focus)

Enfoque / desenfoque explícitamente este widget.

33

void setImageBase(java.lang.String baseUrl)

Obsoleto. Use Tree (TreeImages), ya que proporciona una forma más eficiente y manejable de suministrar un conjunto de imágenes que se utilizarán dentro de un árbol.

34

void setSelectedItem(TreeItem item)

Selecciona un elemento específico.

35

void setSelectedItem(TreeItem item, boolean fireEvents)

Selecciona un elemento específico.

36

void setTabIndex(int index)

Establece la posición del widget en el índice de la pestaña.

37

java.util.Iterator<TreeItem> treeItemIterator()

Iterador de elementos de árbol.

Métodos heredados

Esta clase hereda métodos de las siguientes clases:

  • com.google.gwt.user.client.ui.UIObject

  • com.google.gwt.user.client.ui.Widget

  • java.lang.Object

Ejemplo de widget de árbol

Este ejemplo lo llevará a través de sencillos pasos para mostrar el uso de un widget de árbol en GWT. Siga los siguientes pasos para actualizar la aplicación GWT que creamos en GWT - Capítulo Crear aplicación -

Paso Descripción
1 Cree un proyecto con un nombre HelloWorld en un paquete com.tutorialspoint como se explica en el capítulo GWT - Crear aplicación .
2 Modifique HelloWorld.gwt.xml , HelloWorld.css , HelloWorld.html y HelloWorld.java como se explica a continuación. Mantenga el resto de los archivos sin cambios.
3 Compile y ejecute la aplicación para verificar el resultado de la lógica implementada.

A continuación se muestra el contenido del descriptor de módulo modificado src/com.tutorialspoint/HelloWorld.gwt.xml.

<?xml version = "1.0" encoding = "UTF-8"?>
<module rename-to = 'helloworld'>
   <!-- Inherit the core Web Toolkit stuff.                        -->
   <inherits name = 'com.google.gwt.user.User'/>

   <!-- Inherit the default GWT style sheet.                       -->
   <inherits name = 'com.google.gwt.user.theme.clean.Clean'/>

   <!-- Specify the app entry point class.                         -->
   <entry-point class = 'com.tutorialspoint.client.HelloWorld'/>

   <!-- Specify the paths for translatable code                    -->
   <source path = 'client'/>
   <source path = 'shared'/>

</module>

A continuación se muestra el contenido del archivo de hoja de estilo modificado war/HelloWorld.css.

body {
   text-align: center;
   font-family: verdana, sans-serif;
}

h1 {
   font-size: 2em;
   font-weight: bold;
   color: #777777;
   margin: 40px 0px 70px;
   text-align: center;
}

.gwt-Label {
   font-weight: bold;
   color: maroon;
}

.gwt-Tree .gwt-TreeItem {
   padding: 1px 0px;
   margin: 0px;
   white-space: nowrap;
   cursor: hand;
   cursor: pointer;
}

.gwt-Tree .gwt-TreeItem-selected {
  background: #ebeff9;
}

A continuación se muestra el contenido del archivo de host HTML modificado war/HelloWorld.html.

<html>
   <head>
      <title>Hello World</title>
      <link rel = "stylesheet" href = "HelloWorld.css"/>
      <script language = "javascript" src = "helloworld/helloworld.nocache.js">
      </script>
   </head>

   <body>
      <h1>Tree Widget Demonstration</h1>
      <div id = "gwtContainer"></div>
   </body>
</html>

Tengamos el siguiente contenido del archivo Java src/com.tutorialspoint/HelloWorld.java que demostrará el uso del widget Tree.

package com.tutorialspoint.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.VerticalPanel;

public class HelloWorld implements EntryPoint {
   public void onModuleLoad() {
      //create a label
      final Label labelMessage = new Label();
      labelMessage.setWidth("300");

      // Create a root tree item as department
      TreeItem department = new TreeItem("Department");

      //create other tree items as department names
      TreeItem salesDepartment = new TreeItem("Sales");
      TreeItem marketingDepartment = new TreeItem("Marketing");
      TreeItem manufacturingDepartment = new TreeItem("Manufacturing");

      //create other tree items as employees
      TreeItem employee1 = new TreeItem("Robert");
      TreeItem employee2 = new TreeItem("Joe");
      TreeItem employee3 = new TreeItem("Chris");

      //add employees to sales department
      salesDepartment.addItem(employee1);
      salesDepartment.addItem(employee2);
      salesDepartment.addItem(employee3);

      //create other tree items as employees
      TreeItem employee4 = new TreeItem("Mona");
      TreeItem employee5 = new TreeItem("Tena");	   

      //add employees to marketing department
      marketingDepartment.addItem(employee4);
      marketingDepartment.addItem(employee5);	    

      //create other tree items as employees
      TreeItem employee6 = new TreeItem("Rener");
      TreeItem employee7 = new TreeItem("Linda");

      //add employees to sales department
      manufacturingDepartment.addItem(employee6);
      manufacturingDepartment.addItem(employee7);

      //add departments to department item
      department.addItem(salesDepartment);
      department.addItem(marketingDepartment);
      department.addItem(manufacturingDepartment);

      //create the tree
      Tree tree = new Tree();

      //add root item to the tree
      tree.addItem(department);	   

      tree.addSelectionHandler(new SelectionHandlerL<TreeItem>() {
         @Override
         public void onSelection(SelectionEvent<TreeItem> event) {
            labelMessage.setText("Selected Value: "
            + event.getSelectedItem().getText());
         }
      });

      // Add text boxes to the root panel.
      VerticalPanel panel = new VerticalPanel();
      panel.setSpacing(10);
      panel.add(tree);
      panel.add(labelMessage);

      //add the tree to the root panel
      RootPanel.get("gwtContainer").add(panel);
   }	
}

Una vez que esté listo con todos los cambios realizados, compilemos y ejecutemos la aplicación en modo de desarrollo como hicimos en el capítulo GWT - Crear aplicación . Si todo está bien con su aplicación, esto producirá el siguiente resultado:

Al seleccionar cualquier valor en el árbol, se actualizará un mensaje debajo del árbol que muestra el valor seleccionado.