<!----><!----><!---->
<!---->
Gwt
教程之
创建UI
创建UI
现在我们决定StockWatcher
有那些功能,之前我们已经讨论了如何编写让GWT
编译器可编译的Java
源代码 。下面我们开始构建应用程序的UI
。
GWT
的UI
是由
widgets
和
panels
组成的
。Widgets
提供了通用UI
元素模型如buttons
,
text
boxes
,
和trees
。Panels,
比如 DockPanel
,
HorizontalPanel
,
和RootPanel
,
包含widgets
,用于界定在浏览器中它们是如何布局的
。你有很多种方式自定义widgets
。当然,你也可以在网上找到好的第三方widget
库
。
Widgets
和panels
在所以的浏览器上工作方式一模一样。通过使用它们,你大可不必为每个浏览器写专门的代码。GWT
有一套完整的widgets
组件是可用的且"out of the box,
"
,当然
,你可以不必局限于GWT
给你提供的那些。
RootPanel
任何GWT UI
层次的上方,都有一个
RootPanel
。RootPanel
中通常包装了
HTML host page
中的一个实际元素。默认的RootPanel
包装的是the HTML host page
的<body>
元素。你可以通过调用
RootPanel.get()
方法来获得它的引用,你也可以获得页面中的其他元素。只需要指定那些页面元素的属性id
,然后把它传到
RootPanel.get(String)
方法中。
因此,你有2
种选择来构建你的GWT
应用程序的界面。你可以使用正常的静态HTML
构造应用程序界面,只需要在名为placeholder
元素处插入GWT widgets
和panels
。这种方式在集成已有程序时非常有用,此外,你的网页可以包含空的<body>
元素,
这样你就可以获得默认的RootPanel
的引用,然后在此基础上构建完全的GWT widgets
界面。
在 StockWatcher
例子中,
我们要在我们的HTML
中使用一个 placeholder
元素 。继续打开网页文件(src/com/google/gwt/sample/stockwatcher/public/StockWatcher.html)
,用下面的HTML
替换掉它的内容:
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv="content-type" content="text/html;
charset=UTF-8">
<title>StockWatcher</title>
<script type="text/javascript"
language="javascript" src="com.google.gwt.sample.stockwatcher.StockWatcher.nocache.js"></script>
</head>
<body>
<h1>Stock Watcher</h1>
<div
id="stockList"></div>
</body>
</html>
这段代码定义了页面的静态内容。和正常的html
一样,<title>
标签显示的是在浏览器中页面的标题。<script>
引用的是GWT
将要生成的JavaScript
源码。最后,<div>
标签包含了我们的GWT widgets
。这里设定它的id
属性是为了我们能够在GWT
中通过RootPanel
来访问它。
另外,在文件上方的HTML 4.01 Transitional DOCTYPE
声明设定了要渲染的引擎为"Standards Mode
标准模式"
它提供了更好的跨浏览器能力。如果你移除掉此行,页面将以"Quirks Mode"
渲染,这也就意味着老的浏览器问题都将存在。在某种情况下,如果你要集成的程序依赖于某个浏览器的时候,你可能会选择"Quirks Mode"
。但现在,我们使用的是"Standards
Mode".
Panels and Widgets
现在我们需要使用GWT
panels and widgets
来构建UI
的动态部分。the
Getting Started guide
的
开始
向你展示的是StockWatcher
的最终效果。库存列表以表格的形式显示,下方是新文本框和增加按钮,底部显示的是最近更新的时间戳。由于UI
元素是垂直的堆栈形式。我们查看
widget gallery
会发现
VerticalPanel
就是我们需要的,我们要使用GWT VerticalPanel
和它的三个孩子节点。
第一个节点是库存列表自己。由于这是一个表格,我们再回到gallery
来查找HTMLTable
,页面显示的那样。他是抽象标示所以我们需要查找合适的子类。Grid
表格不会起作用,因为它不运行我们从表格中间移除一行(
我们需要从列表中移除库存的功能)
。另外
,FlexTable
确实有一个removeRow(int)
方法,它也有方法设定单元格内容(按行列索引),如果需要的话可以自动扩展表格。迟早会有用的。
VerticalPanel
上的第二个节点是一个新文本框标记和增加按钮。我们想让它们显示在同一行,所以需要另外一个内嵌的panel
来完成布局。因此,我们使用HorizontalPanel
,且TextBox
和Button
作为其子节点。
最后, VerticalPanel
的第三个节点是最后更新的时间戳,它显示了一个简单的Label
。这个Label
窗口被设计成一个动态显示的非html
文本。
<!----><!---->
<!---->
之后,看代码:
打开 StockWatcher
的切入点类( entry point class
)
(src/com/google/gwt/sample/stockwatcher/client/StockWatcher.java)
用如下代码替换:
package
com.google.gwt.sample.stockwatcher.client;
import com.google.gwt.core.client.EntryPoint;
import
com.google.gwt.user.client.ui.Button;
import
com.google.gwt.user.client.ui.FlexTable;
import
com.google.gwt.user.client.ui.HorizontalPanel;
import
com.google.gwt.user.client.ui.Label;
import
com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import
com.google.gwt.user.client.ui.VerticalPanel;
public class StockWatcher implements
EntryPoint {
private VerticalPanel mainPanel = new VerticalPanel();
private FlexTable stocksFlexTable = new FlexTable();
private HorizontalPanel addPanel = new HorizontalPanel();
private TextBox newSymbolTextBox = new TextBox();
private Button addButton = new Button("Add");
private Label lastUpdatedLabel = new Label();
public void onModuleLoad() {
// set up stock list table
stocksFlexTable.setText(0, 0, "Symbol");
stocksFlexTable.setText(0, 1, "Price");
stocksFlexTable.setText(0, 2, "Change");
stocksFlexTable.setText(0, 3, "Remove");
//
assemble Add Stock panel
addPanel.add(newSymbolTextBox);
addPanel.add(addButton);
//
assemble main panel
mainPanel.add(stocksFlexTable);
mainPanel.add(addPanel);
mainPanel.add(lastUpdatedLabel);
// add the main panel to the HTML element
with the id "stockList"
RootPanel.get("stockList").add(mainPanel);
// move
cursor focus to the text box
newSymbolTextBox.setFocus(true);
}
}
我们所做的仅是使用GWT
的 widets
和panels
构建一个简单的界面而已。我们是
自底向上实现的,
首先通过类属性来初始化每个widget/panel
。之后在onModuleLoad()
方法中,我们设定了FlexTable
的首行,并把它的各个子节点加到panels
上。最后一步通过我们的HTML
页面上名为stockList
的<div>
元素,把我们外部的VerticalPanel
增加到RootPanel
上。
测试界面
是时候来测试一下我们做的改变了。保存已编辑的文件,在hosted
模式下运行StockWatcher
(在eclipse
中,点击Run
按钮,如果你使用其他IDE
的话,运行
StockWatcher-shell
),你会看到StockWatcher
在hosted
模式下下浏览的原始形式。
<!----><!---->
<!---->
正如你所看到的,当前我们所做的不是为了拿任何的设计奖,演示而已,我们之后会增加一些CSS
。StockWatcher
真正缺乏的是可交互性:该界面实际上暂时没有做任何事----
让我们来通过增加一些事件监听器
完成它吧!
详见GWT教程之 增加事件监听器
分享到:
相关推荐
2. **丰富的UI组件**:GWT提供了大量的UI控件,如按钮、文本框、表格等,这些组件都是基于标准的W3C DOM元素构建的,可以方便地进行样式定制。 3. **异步通信(RPC)**:GWT支持异步远程过程调用(RPC),使得...
在这个阶段,你会学习如何创建第一个GWT项目,理解模块化系统,以及如何利用GWT的UI组件库(如TextBox、Button等)构建用户界面。此外,还会介绍事件处理机制、数据绑定和异步通信(RPC)的基础知识。 **中级GWT....
“GWT入门”和“GWT中文教程”显然是针对初学者的,它们可能从最基础的GWT安装、项目配置开始,逐步讲解GWT的核心概念,如UI设计(Widget系统)、事件处理、数据模型和服务器通信(RPC机制)、本地存储、国际化等。...
**GWT(Google Web Toolkit)入门教程** GWT(Google Web Toolkit)是一个开源...通过深入理解上述知识点,你将能够开始自己的GWT开发之旅。记得实践是检验真理的唯一标准,动手创建项目,体验GWT带来的便捷与乐趣吧!
### ExtGWT、GWT与GXT初学教程:打造企业级富客户端Web应用 #### 构建初识:ExtGWT与GWT的协同工作 ExtGWT,作为GWT(Google Web Toolkit)的有力补充,旨在为Java开发者提供更为丰富、功能全面的组件库,从而构建...
**GWT 入门教程与实例解析** Google Web Toolkit(GWT)是Google推出的一款用于构建高性能、跨浏览器的Web应用程序的开源开发工具。它基于Java语言,通过编译Java源代码为JavaScript,使得开发者可以利用Java的强大...
GWT提供了丰富的UI组件库,这些组件经过精心设计,可以轻松创建复杂的用户界面: - **Basic Widgets**:如Button、Label等基础组件,用于构建简单的用户界面。 - **Layout Panels**:如HorizontalPanel、...
本教程将引导你了解如何在Eclipse环境中配置和使用GWT进行开发。 首先,为了在Eclipse中开发GWT应用,你需要安装GWT插件。根据Eclipse的版本,你可以从以下地址获取插件: - Eclipse 3.5 (Galileo): ...
GWT进阶教程旨在帮助开发者深入理解并熟练掌握GWT的各种高级特性和实践技巧。 **一、GWT的核心特性** 1. **Java到JavaScript的编译器**:GWT的核心功能是将Java代码转换为高效的JavaScript,使得开发者可以利用...
3. **Widget库**:GWT提供了一套丰富的Widget库,包括按钮、文本框、面板等基本UI组件,以及表单、日期选择器等复杂控件,这些都是用Java封装的,可以直接在Java代码中使用。 4. **事件处理**:GWT中的事件模型基于...
本教程将详细阐述如何搭建SmartGWT的开发环境,以及如何利用附带的`build.xml`编译器进行项目构建。 首先,你需要确保已经安装了Java Development Kit (JDK)。SmartGWT和GWT都是基于Java的,因此至少需要JDK 8或更...
8. **丰富的UI组件**:GWT提供了大量的预构建UI组件,如按钮、表单、表格等,这些组件可以方便地进行定制和组合。 9. **单元测试**:GWT提供了JUnit支持,使得开发者可以在服务器端进行客户端代码的单元测试。 10....
教程分为两部分,第一部分主要介绍GWT的基本使用,包括安装GWT、使用GWT的命令行工具、编程UI开发以及创建启用Ajax的服务。第二部分则深入探讨如何利用GWT和Geronimo将简单的股票报价应用升级为更高级的股票投资应用...
总结来说,"gwt服务器端(内含配置教程)"指的是如何在Eclipse中配置和开发GWT应用,包括服务器端的设置和与客户端的交互。通过学习和实践这个主题,开发者可以掌握使用Java开发高效、跨平台的Web应用的技能。
GWT中的Composite组件允许开发者将多个UI元素组合成一个自定义的复杂组件。在GWT Designer中,你可以通过拖拽和放置控件,以及设置布局管理器来创建Composite。Composite类是GWT的基础,可以构建可重用的代码模块,...
GWT Ext则是gwtext的核心部分,基于Ext JS库,为GWT提供了更多的UI组件和功能。 第一部分:gwtext基础 在这一部分,你将学习到gwtext的基本概念和安装步骤。gwtext是如何与GWT整合,提供增强的组件库和布局管理器的...
本教程将逐步引导你了解GWT-Ext的基础知识,并通过实例教你如何创建和配置组件,处理事件,以及实现数据绑定。随着对GWT-Ext的深入理解,你将能开发出功能强大且用户友好的Web应用。 通过阅读提供的“gwt-ext培训...