GWT - Tree 小部件
简介
Tree 树形小部件 表示标准的分层树形小部件。树形小部件包含用户可以打开、关闭和选择的 TreeItem 层次结构。
类声明
以下是 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 {}
类构造函数
Sr.No. | 构造函数 &描述 |
---|---|
1 |
Tree() 构造一个空树。 |
2 |
Tree(TreeImages images) 构造一个使用指定图像包的树。 |
3 |
Tree(TreeImages images, boolean useLeafImages) 构造一个使用指定图像包的树。 |
类方法
Sr.No. | 函数名称 &描述 |
---|---|
1 |
void add(Widget widget) 将小部件添加为根树项。 |
2 |
void addFocusListener(FocusListener listener) 添加一个监听器接口来接收鼠标事件。 |
3 |
TreeItem addItem(java.lang.String itemText) 添加一个包含指定文本的简单树项。 |
4 |
void addItem(TreeItem item) 向此树的根级别添加一个项目。 |
5 |
TreeItem addItem(Widget widget) 添加一个包含指定小部件的新树项目。 |
6 |
void addKeyboardListener(KeyboardListener listener) 添加一个监听器接口以接收键盘事件。 |
7 |
void addMouseListener(MouseListener listener) |
8 |
void addTreeListener(TreeListener listener) 添加一个监听器接口来接收树事件。 |
9 |
void clear() 清除当前树中的所有树项。 |
10 |
protected void doAttachChildren() 如果小部件实现了 HasWidgets,它必须重写此方法并为其每个子项调用 onAttach()小部件。 |
11 |
protected void doDetachChildren() 如果小部件实现 HasWidgets,则必须重写此方法并为其每个子小部件调用 onDetach()。 |
12 |
void EnsureSelectedItemVisible() 确保当前选定的项目可见,打开其父级并根据需要滚动树。 |
13 |
java.lang.String getImageBase() 已弃用。使用 Tree(TreeImages),因为它提供了一种更高效、更易于管理的方式来提供一组要在树中使用的图像。 |
14 |
TreeItem getItem(int index) 获取指定索引处的顶级树项。 |
15 |
int getItemCount() 获取此树的根节点所包含的项目数。 |
16 |
TreeItem getSelectedItem() 获取当前选定的项目。 |
17 |
int getTabIndex() 获取小部件在选项卡索引中的位置。 |
18 |
boolean isAnimationEnabled() |
19 |
protected boolean isKeyboardNavigationEnabled(TreeItem currentItem) 指示是否为 Tree 和给定的 TreeItem 启用了键盘导航。 |
20 |
java.util.Iterator<Widget> iterator() 获取包含的小部件的迭代器。 |
21 |
void onBrowserEvent(Event event) 每当收到浏览器事件时触发。 |
22 |
protected void onEnsureDebugId(java.lang.String baseID) 受影响的元素:-root = 根 TreeItem。 |
23 |
protected void onLoad() 小部件变为附加到浏览器的文档。 |
24 |
boolean remove(Widget w) 删除子窗口小部件。 |
25 |
void removeFocusListener(FocusListener listener) 删除先前添加的侦听器接口。 |
26 |
void removeItem(TreeItem item) 从此树的根级别删除一个项目。 |
27 |
void removeItems() 从此树的根级别移除所有项目。 |
28 |
void removeKeyboardListener(KeyboardListener listener) 移除先前添加的侦听器接口。 |
29 |
void removeTreeListener(TreeListener listener) 移除先前添加的侦听器接口。 |
30 |
void setAccessKey(char key) 设置小部件的"访问键"。 |
31 |
void setAnimationEnabled(boolean enable) 启用或禁用动画。 |
32 |
void setFocus(boolean focus) 明确聚焦/取消聚焦此小部件。 |
33 |
void setImageBase(java.lang.String baseUrl) 已弃用。使用 Tree(TreeImages),因为它提供了一种更高效、更易于管理的方式来提供一组可在树中使用的图像。 |
34 |
void setSelectedItem(TreeItem item) 选择指定的项目。 |
35 |
void setSelectedItem(TreeItem item, boolean fireEvents) 选择指定的项目。 |
36 |
void setTabIndex(int index) 设置小部件在选项卡索引中的位置。 |
37 |
java.util.Iterator<TreeItem> treeItemIterator() 树项目的迭代器。 |
继承的方法
该类继承了以下类的方法 −
com.google.gwt.user.client.ui.UIObject
com.google.gwt.user.client.ui.Widget
java.lang.Object
树形小部件示例
此示例将带您通过简单的步骤展示 GWT 中树形小部件的用法。按照以下步骤更新我们在 GWT - 创建应用程序 一章中创建的 GWT 应用程序 −
步骤 | 描述 |
---|---|
1 | 在 com.tutorialspoint 包下创建一个名为 HelloWorld 的项目,如 GWT - 创建应用程序 一章中所述。 |
2 | 修改 HelloWorld.gwt.xml、HelloWorld.css、HelloWorld.html 和 HelloWorld.java,如下所述。其余文件保持不变。 |
3 | 编译并运行应用程序以验证实现逻辑的结果。 |
以下是修改后的模块描述符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>
以下是修改后的样式表文件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; }
以下是修改后的 HTML 主机文件 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>
让我们来看看 Java 文件 src/com.tutorialspoint/HelloWorld.java 的以下内容,它将演示 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() { //创建标签 final Label labelMessage = new Label(); labelMessage.setWidth("300"); // 创建根树项作为部门 TreeItem Department = new TreeItem("Department"); //创建其他树项作为部门名称 TreeItem salesDepartment = new TreeItem("Sales"); TreeItem marketingDepartment = new TreeItem("Marketing"); TreeItem manufacturingDepartment = new TreeItem("Manufacturing"); //创建其他树项作为员工 TreeItem employee1 = new TreeItem("Robert"); TreeItem employee2 = new TreeItem("Joe"); TreeItem employee3 = new TreeItem("Chris"); //将员工添加到销售部门 salesDepartment.addItem(employee1); salesDepartment.addItem(employee2); salesDepartment.addItem(employee3); //创建其他树项作为员工 TreeItem employee4 = new TreeItem("Mona"); TreeItem employee5 = new TreeItem("Tena"); //将员工添加到营销部门 marketingDepartment.addItem(employee4); marketingDepartment.addItem(employee5); //将其他树项创建为员工 TreeItem employee6 = new TreeItem("Rener"); TreeItem employee7 = new TreeItem("Linda"); //将员工添加到销售部门 manufacturingDepartment.addItem(employee6); manufacturingDepartment.addItem(employee7); //将部门添加到部门项 Department.addItem(salesDepartment); Department.addItem(marketingDepartment); Department.addItem(manufacturingDepartment); //创建树 Tree tree = new Tree(); //将根项添加到树 tree.addItem(department); tree.addSelectionHandler(new SelectionHandlerL<TreeItem>() { @Override public void onSelection(SelectionEvent<TreeItem> event) { labelMessage.setText("Selected Value: " + event.getSelectedItem().getText()); } }); // 将文本框添加到根面板。 VerticalPanel panel = new VerticalPanel(); panel.setSpacing(10); panel.add(tree); panel.add(labelMessage); //将树添加到根面板 RootPanel.get("gwtContainer").add(panel); } }
完成所有更改后,让我们像在 GWT - 创建应用程序 一章中一样,在开发模式下编译并运行应用程序。如果您的应用程序一切正常,这将产生以下结果 −
选择树中的任何值,都会更新树下方显示所选值的消息。