`
shiren1118
  • 浏览: 133896 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

Gwt教程之创建UI

    博客分类:
  • gwt
阅读更多

<!----><!----><!----> <!---->

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 ),你会看到StockWatcherhosted 模式下下浏览的原始形式。

<!----><!----> <!---->

正如你所看到的,当前我们所做的不是为了拿任何的设计奖,演示而已,我们之后会增加一些CSSStockWatcher 真正缺乏的是可交互性:该界面实际上暂时没有做任何事---- 让我们来通过增加一些事件监听器 完成它吧!

 

 

详见GWT教程之 增加事件监听器

 

 

7
1
分享到:
评论

相关推荐

    gwt教程

    2. **丰富的UI组件**:GWT提供了大量的UI控件,如按钮、文本框、表格等,这些组件都是基于标准的W3C DOM元素构建的,可以方便地进行样式定制。 3. **异步通信(RPC)**:GWT支持异步远程过程调用(RPC),使得...

    GWT完整教程,Word版

    在这个阶段,你会学习如何创建第一个GWT项目,理解模块化系统,以及如何利用GWT的UI组件库(如TextBox、Button等)构建用户界面。此外,还会介绍事件处理机制、数据绑定和异步通信(RPC)的基础知识。 **中级GWT....

    GWT入门 GWT中文教程

    “GWT入门”和“GWT中文教程”显然是针对初学者的,它们可能从最基础的GWT安装、项目配置开始,逐步讲解GWT的核心概念,如UI设计(Widget系统)、事件处理、数据模型和服务器通信(RPC机制)、本地存储、国际化等。...

    GWT入门教程

    **GWT(Google Web Toolkit)入门教程** GWT(Google Web Toolkit)是一个开源...通过深入理解上述知识点,你将能够开始自己的GWT开发之旅。记得实践是检验真理的唯一标准,动手创建项目,体验GWT带来的便捷与乐趣吧!

    ext gwt gxt初学教程

    ### ExtGWT、GWT与GXT初学教程:打造企业级富客户端Web应用 #### 构建初识:ExtGWT与GWT的协同工作 ExtGWT,作为GWT(Google Web Toolkit)的有力补充,旨在为Java开发者提供更为丰富、功能全面的组件库,从而构建...

    GWT入门教程+实例代码

    **GWT 入门教程与实例解析** Google Web Toolkit(GWT)是Google推出的一款用于构建高性能、跨浏览器的Web应用程序的开源开发工具。它基于Java语言,通过编译Java源代码为JavaScript,使得开发者可以利用Java的强大...

    GWT入门教程的好东西啊

    GWT提供了丰富的UI组件库,这些组件经过精心设计,可以轻松创建复杂的用户界面: - **Basic Widgets**:如Button、Label等基础组件,用于构建简单的用户界面。 - **Layout Panels**:如HorizontalPanel、...

    GWT开发教程.pdf

    本教程将引导你了解如何在Eclipse环境中配置和使用GWT进行开发。 首先,为了在Eclipse中开发GWT应用,你需要安装GWT插件。根据Eclipse的版本,你可以从以下地址获取插件: - Eclipse 3.5 (Galileo): ...

    GWT进阶教程

    GWT进阶教程旨在帮助开发者深入理解并熟练掌握GWT的各种高级特性和实践技巧。 **一、GWT的核心特性** 1. **Java到JavaScript的编译器**:GWT的核心功能是将Java代码转换为高效的JavaScript,使得开发者可以利用...

    GWT中文教程(入门进阶)

    3. **Widget库**:GWT提供了一套丰富的Widget库,包括按钮、文本框、面板等基本UI组件,以及表单、日期选择器等复杂控件,这些都是用Java封装的,可以直接在Java代码中使用。 4. **事件处理**:GWT中的事件模型基于...

    smartGWT开发环境搭建(完整工程)

    本教程将详细阐述如何搭建SmartGWT的开发环境,以及如何利用附带的`build.xml`编译器进行项目构建。 首先,你需要确保已经安装了Java Development Kit (JDK)。SmartGWT和GWT都是基于Java的,因此至少需要JDK 8或更...

    GWT

    8. **丰富的UI组件**:GWT提供了大量的预构建UI组件,如按钮、表单、表格等,这些组件可以方便地进行定制和组合。 9. **单元测试**:GWT提供了JUnit支持,使得开发者可以在服务器端进行客户端代码的单元测试。 10....

    GWT-EXT学习教程(中级)

    教程分为两部分,第一部分主要介绍GWT的基本使用,包括安装GWT、使用GWT的命令行工具、编程UI开发以及创建启用Ajax的服务。第二部分则深入探讨如何利用GWT和Geronimo将简单的股票报价应用升级为更高级的股票投资应用...

    gwt 服务器端(内含配置教程)

    总结来说,"gwt服务器端(内含配置教程)"指的是如何在Eclipse中配置和开发GWT应用,包括服务器端的设置和与客户端的交互。通过学习和实践这个主题,开发者可以掌握使用Java开发高效、跨平台的Web应用的技能。

    Gwt Designer 开发实例一

    GWT中的Composite组件允许开发者将多个UI元素组合成一个自定义的复杂组件。在GWT Designer中,你可以通过拖拽和放置控件,以及设置布局管理器来创建Composite。Composite类是GWT的基础,可以构建可重用的代码模块,...

    gwtext学习三部曲

    GWT Ext则是gwtext的核心部分,基于Ext JS库,为GWT提供了更多的UI组件和功能。 第一部分:gwtext基础 在这一部分,你将学习到gwtext的基本概念和安装步骤。gwtext是如何与GWT整合,提供增强的组件库和布局管理器的...

    gwt-ext培训教程

    本教程将逐步引导你了解GWT-Ext的基础知识,并通过实例教你如何创建和配置组件,处理事件,以及实现数据绑定。随着对GWT-Ext的深入理解,你将能开发出功能强大且用户友好的Web应用。 通过阅读提供的“gwt-ext培训...

Global site tag (gtag.js) - Google Analytics