GWT - Widget Árvore

Introdução

o Treewidget representa um widget de árvore hierárquica padrão. A árvore contém uma hierarquia de TreeItems que o usuário pode abrir, fechar e selecionar.

Declaração de Classe

A seguir está a declaração para com.google.gwt.user.client.ui.Tree classe -

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

Regras de estilo CSS

As seguintes regras de estilo CSS padrão serão aplicadas a todos os widgets Árvore. Você pode substituí-lo de acordo com seus requisitos.

.gwt-Tree {}

.gwt-TreeItem {}

.gwt-TreeItem-selected {}

Construtores de classe

Sr. Não. Construtor e descrição
1

Tree()

Constrói uma árvore vazia.

2

Tree(TreeImages images)

Constrói uma árvore que usa o pacote de imagens especificado para imagens.

3

Tree(TreeImages images, boolean useLeafImages)

Constrói uma árvore que usa o pacote de imagens especificado para imagens.

Métodos de aula

Sr. Não. Nome e descrição da função
1

void add(Widget widget)

Adiciona o widget como um item da árvore raiz.

2

void addFocusListener(FocusListener listener)

Adiciona uma interface de ouvinte para receber eventos de mouse.

3

TreeItem addItem(java.lang.String itemText)

Adiciona um item de árvore simples contendo o texto especificado.

4

void addItem(TreeItem item)

Adiciona um item ao nível raiz desta árvore.

5

TreeItem addItem(Widget widget)

Adiciona um novo item de árvore contendo o widget especificado.

6

void addKeyboardListener(KeyboardListener listener)

Adiciona uma interface de ouvinte para receber eventos de teclado.

7

void addMouseListener(MouseListener listener)

8

void addTreeListener(TreeListener listener)

Adiciona uma interface de ouvinte para receber eventos de árvore.

9

void clear()

Limpa todos os itens da árvore da árvore atual.

10

protected void doAttachChildren()

Se um widget implementa HasWidgets, ele deve sobrescrever esse método e chamar onAttach () para cada um de seus widgets filhos.

11

protected void doDetachChildren()

Se um widget implementa HasWidgets, ele deve substituir esse método e chamar onDetach () para cada um de seus widgets filhos.

12

void ensureSelectedItemVisible()

Garante que o item atualmente selecionado esteja visível, abrindo seus pais e rolando a árvore conforme necessário.

13

java.lang.String getImageBase()

Descontinuada. Use Tree (TreeImages), pois fornece uma maneira mais eficiente e gerenciável de fornecer um conjunto de imagens a serem usadas em uma árvore.

14

TreeItem getItem(int index)

Obtém o item da árvore de nível superior no índice especificado.

15

int getItemCount()

Obtém o número de itens contidos na raiz desta árvore.

16

TreeItem getSelectedItem()

Obtém o item atualmente selecionado.

17

int getTabIndex()

Obtém a posição do widget no índice da guia.

18

boolean isAnimationEnabled()

19

protected boolean isKeyboardNavigationEnabled(TreeItem currentItem)

Indica se a navegação do teclado está habilitada para a Árvore e para um determinado TreeItem.

20

java.util.Iterator<Widget> iterator()

Obtém um iterador para os widgets contidos.

21

void onBrowserEvent(Event event)

Disparado sempre que um evento do navegador é recebido.

22

protected void onEnsureDebugId(java.lang.String baseID)

Elementos afetados: -root = O TreeItem raiz.

23

protected void onLoad()

Este método é chamado imediatamente após um widget ser anexado ao documento do navegador.

24

boolean remove(Widget w)

Remove um widget filho.

25

void removeFocusListener(FocusListener listener)

Remove uma interface de ouvinte adicionada anteriormente.

26

void removeItem(TreeItem item)

Remove um item do nível raiz desta árvore.

27

void removeItems()

Remove todos os itens do nível raiz desta árvore.

28

void removeKeyboardListener(KeyboardListener listener)

Remove uma interface de ouvinte adicionada anteriormente.

29

void removeTreeListener(TreeListener listener)

Remove uma interface de ouvinte adicionada anteriormente.

30

void setAccessKey(char key)

Define a 'chave de acesso' do widget.

31

void setAnimationEnabled(boolean enable)

Ative ou desative as animações.

32

void setFocus(boolean focus)

Focar / desfocar explicitamente este widget.

33

void setImageBase(java.lang.String baseUrl)

Descontinuada. Use Tree (TreeImages), pois fornece uma maneira mais eficiente e gerenciável de fornecer um conjunto de imagens a serem usadas em uma árvore.

34

void setSelectedItem(TreeItem item)

Seleciona um item especificado.

35

void setSelectedItem(TreeItem item, boolean fireEvents)

Seleciona um item especificado.

36

void setTabIndex(int index)

Define a posição do widget no índice da guia.

37

java.util.Iterator<TreeItem> treeItemIterator()

Iterador de itens da árvore.

Métodos herdados

Esta classe herda métodos das seguintes classes -

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

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

  • java.lang.Object

Exemplo de widget de árvore

Este exemplo o levará por etapas simples para mostrar o uso de um widget de árvore no GWT. Siga as etapas a seguir para atualizar o aplicativo GWT que criamos no GWT - capítulo Criar aplicativo -

Degrau Descrição
1 Crie um projeto com o nome HelloWorld em um pacote com.tutorialspoint conforme explicado no capítulo GWT - Criar aplicativo .
2 Modifique HelloWorld.gwt.xml , HelloWorld.css , HelloWorld.html e HelloWorld.java conforme explicado abaixo. Mantenha o resto dos arquivos inalterados.
3 Compile e execute o aplicativo para verificar o resultado da lógica implementada.

A seguir está o conteúdo do descritor do 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 seguir está o conteúdo do arquivo de folha 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 seguir está o conteúdo do arquivo 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>

Vamos ter o seguinte conteúdo do arquivo Java src/com.tutorialspoint/HelloWorld.java que demonstrará o uso do 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);
   }	
}

Quando você estiver pronto com todas as alterações feitas, vamos compilar e rodar o aplicativo em modo de desenvolvimento como fizemos no capítulo GWT - Criar Aplicativo . Se tudo estiver bem com sua aplicação, isso produzirá o seguinte resultado -

Selecionar qualquer valor na árvore atualizará uma mensagem abaixo da árvore exibindo o valor selecionado.