GWT Tree组件

GWT Tree组件 介绍

Tree组件代表一个标准的分层树部件。该树包含用户可以打开、关闭和选择的 TreeItem 层次结构。

GWT Tree组件 声明

以下是com.google.gwt.user.client.ui.Tree类的声明

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

CSS 样式规则

以下默认 CSS 样式规则将应用于所有Tree标签。您可以根据您的要求覆盖它。

.gwt-Tree {}

.gwt-TreeItem {}

.gwt-TreeItem-selected {}

GWT Tree组件 构造方法

构造方法 描述
Tree() 构造一个空的树对象。
Tree(TreeImages images) 构造一个树,该树使用指定的图像包作为图像。
Tree(TreeImages images, boolean useLeafImages) 构造一个树,该树使用指定的图像包作为图像。

GWT Tree组件 方法

方法 描述
void add(Widget widget) 将小部件添加为根树项。
void addFocusListener(FocusListener listener) 添加一个监听器接口来接收鼠标事件。
TreeItem addItem(java.lang.String itemText) 添加一个包含指定文本的简单树项。
void addItem(TreeItem item) 将项目添加到此树的根级别。
TreeItem addItem(Widget widget) 添加包含指定小部件的新树项。
void addKeyboardListener(KeyboardListener listener) 添加侦听器接口以接收键盘事件。
void addMouseListener(MouseListener listener) 添加侦听器接口以接收鼠标事件。
void addTreeListener(TreeListener listener) 添加一个监听器接口来接收树事件。
void clear() 清除当前树中的所有树项。
protected void doAttachChildren() 如果小部件实现了 HasWidgets,则它必须覆盖此方法并为其每个子小部件调用 onAttach()。
protected void doDetachChildren() 如果小部件实现了 HasWidgets,则它必须覆盖此方法并为其每个子小部件调用 onDetach()。
void ensureSelectedItemVisible() 确保当前选定的项目可见,打开其父项并根据需要滚动树。
java.lang.String getImageBase() 已弃用。使用 Tree(TreeImages) ,因为它提供了一种更有效、更易于管理的方式来提供一组要在树中使用的图像。
TreeItem getItem(int index) 获取指定索引处的顶级树项。
int getItemCount() 获取此树根中包含的项目数。
TreeItem getSelectedItem() 获取当前选中的项目。
int getTabIndex() 获取小部件在选项卡索引中的位置。
boolean isAnimationEnabled()  
protected boolean isKeyboardNavigationEnabled(TreeItem currentItem) 指示是否为树和给定的 TreeItem 启用键盘导航。
java.util.Iterator<Widget> iterator() 获取包含的小部件的迭代器。
void onBrowserEvent(Event event) 每当接收到浏览器事件时触发。
protected void onEnsureDebugId(java.lang.String baseID) 受影响的元素: -root = 根 TreeItem。
protected void onLoad() 在小部件附加到浏览器的文档后立即调用此方法。
boolean remove(Widget w) 删除子小部件。
void removeFocusListener(FocusListener listener) 删除以前添加的侦听器接口。
void removeItem(TreeItem item) 从此树的根级别删除项目。
void removeItems() 从此树的根级别删除所有项目。
void removeKeyboardListener(KeyboardListener listener) 删除以前添加的侦听器接口。
void removeTreeListener(TreeListener listener) 删除以前添加的侦听器接口。
void setAccessKey(char key) 设置小部件的“key”。
void setAnimationEnabled(boolean enable) 启用或禁用动画。
void setFocus(boolean focus) 显式聚焦/取消聚焦此小部件。
void setImageBase(java.lang.String baseUrl) 已弃用。使用 Tree(TreeImages) ,因为它提供了一种更有效、更易于管理的方式来提供一组要在树中使用的图像。
void setSelectedItem(TreeItem item) 选择指定的项目。
void setSelectedItem(TreeItem item, boolean fireEvents) 选择指定的项目。
void setTabIndex(int index) 设置小部件在选项卡索引中的位置。
java.util.Iterator<TreeItem> treeItemIterator() 树项的迭代器。

GWT Tree组件 示例

1)修改HelloWorld.gwt.xml

<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.8.0//EN"
        "http://gwtproject.org/doctype/2.8.0/gwt-module.dtd">
<module rename-to="HelloWorld">

    <!-- Inherit the core Web Toolkit stuff.                  -->
    <inherits name='com.google.gwt.user.User'/>

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


    <!-- Specify the app servlets.                   -->
    <servlet path='/HelloWorldService' class='com.yiidian.helloWorld.server.HelloWorldServiceImpl'/>

    <source path = 'client'/>
    <source path = 'shared'/>
</module>

2)修改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;
}

3)修改HelloWorld.html

<html>
<head>
    <title>yiidian.com-GWT Hello World</title>
    <link type="text/css" rel="stylesheet" href="HelloWorld.css">
    <script type="text/javascript" language="javascript" src="HelloWorld/HelloWorld.nocache.js"></script>
</head>
<body>
<h1>Tree Widget Demonstration</h1>
<div id = "gwtContainer"></div>
</body>
</html>

4)HelloWorld.java

package com.yiidian.helloWorld.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.*;

/**
 * Entry point classes define <code>onModuleLoad()</code>
 */
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.setText("Department");

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

        //create other tree items as employees
        TreeItem employee1 = new TreeItem();
        employee1.setText("Robert");
        TreeItem employee2 = new TreeItem();
        employee2.setText("Joe");
        TreeItem employee3 = new TreeItem();
        employee3.setText("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();
        employee4.setText("Mona");
        TreeItem employee5 = new TreeItem();
        employee5.setText("Tena");

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

        //create other tree items as employees
        TreeItem employee6 = new TreeItem();
        employee6.setText("Rener");
        TreeItem employee7 = new TreeItem();
        employee7.setText("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 SelectionHandler<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);
    }
}

运行应用程序,显示结果如下:

选择树中的任何值,将更新显示所选值的树下方的消息。

热门文章

优秀文章