- 浏览: 500968 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (156)
- xml (4)
- web前端 (24)
- jQuery (18)
- java (38)
- SQL (9)
- perl (2)
- OTRS (1)
- GWT (4)
- Linux (32)
- Maven (2)
- Spring (2)
- Oracle Win7 (1)
- css (8)
- eclipse (3)
- mysql (11)
- tomcat (5)
- git (4)
- javascript (22)
- font (1)
- android (1)
- log4j (1)
- email (1)
- sublime plugin (1)
- html (2)
- matches (1)
- php (3)
- apache (3)
- gd (1)
- docker (5)
- rails (1)
- RabbitMQ (1)
- Ubuntu (3)
- L2TP VPN (1)
- nodejs (1)
- oraclejet (1)
- ubutun (1)
- ntp (1)
- ngix (1)
- ssl (1)
- https (1)
- Linux,Debian (2)
- dpkg (1)
- pac (1)
- vi (1)
- vim (1)
- java,http (0)
- httpClient (0)
- shutter (1)
- shell (1)
- redmine (1)
最新评论
-
纵观全局:
配置之后,连接显示不是私密连接
keytool生成证书与Tomcat SSL配置 -
zhuchao_ko:
可以 伪造
java获得ip地址 -
longhua2003:
代码太乱了
java下载文件 -
tomhat:
ccx410 写道 安装gwt报错,unable to ret ...
GWT CellTable -
ccx410:
安装gwt报错,unable to retrieve osgi ...
GWT CellTable
package com.cn.client;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.google.gwt.cell.client.CheckboxCell;
import com.google.gwt.cell.client.DateCell;
import com.google.gwt.cell.client.EditTextCell;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
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.VerticalPanel;
import com.google.gwt.view.client.AsyncDataProvider;
import com.google.gwt.view.client.DefaultSelectionEventManager;
import com.google.gwt.view.client.HasData;
import com.google.gwt.view.client.MultiSelectionModel;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SelectionChangeEvent;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class CellTableTest implements EntryPoint {
/**
* A simple data type that represents a contact.
*/
private static class Contact {
private String address;
private Date birthday;
private String name;
private String firstName;
private String lastName;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Contact(String firstName, String lastName, Date birthday,
String address) {
this.firstName = firstName;
this.lastName = lastName;
this.name = firstName + " " + lastName;
this.birthday = birthday;
this.address = address;
}
public static final ProvidesKey<Contact> KEY_PROVIDER = new ProvidesKey<Contact>() {
public Object getKey(Contact item) {
return item == null ? null : item.getName();
}
};
}
private Label selectedLabel = new Label();
public void onModuleLoad() {
// Create a CellTable.
final CellTable<Contact> cellTable = new CellTable<Contact>();
// Display n rows in one page
cellTable.setPageSize(10);
cellTable.setWidth("1024px");
// Add a selection model so we can select cells.
final MultiSelectionModel<Contact> selectionModel = new MultiSelectionModel<Contact>(
Contact.KEY_PROVIDER);
cellTable.setSelectionModel(selectionModel,
DefaultSelectionEventManager.<Contact> createCheckboxManager());
selectionModel.addSelectionChangeHandler(
new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
StringBuilder sb = new StringBuilder();
boolean first = true;
List<Contact> selected = new ArrayList<Contact>(selectionModel.getSelectedSet());
for (Contact value : selected) {
if (first) {
first = false;
} else {
sb.append(", ");
}
sb.append(value.getName());
}
selectedLabel.setText("选择:"+sb.toString());
}
});
Column<Contact, Boolean> checkColumn = new Column<Contact, Boolean>(
new CheckboxCell(true, false)) {
@Override
public Boolean getValue(Contact object) {
return selectionModel.isSelected(object);
}
};
cellTable.addColumn(checkColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));
cellTable.setColumnWidth(checkColumn, 10, Unit.PX);
Column<Contact, String> firstNameColumn = new Column<Contact, String>(
new EditTextCell()) {
@Override
public String getValue(Contact object) {
return object.getFirstName();
}
};
cellTable.addColumn(firstNameColumn, "名字");
firstNameColumn.setFieldUpdater(new FieldUpdater<Contact, String>() {
public void update(int index, Contact object, String value) {
// Called when the user changes the value.
object.setFirstName(value);
}
});
cellTable.setColumnWidth(firstNameColumn, 10, Unit.PCT);
Column<Contact, String> lastNameColumn = new Column<Contact, String>(
new EditTextCell()) {
@Override
public String getValue(Contact object) {
return object.getLastName();
}
};
lastNameColumn.setSortable(true);
cellTable.addColumn(lastNameColumn, "姓");
lastNameColumn.setFieldUpdater(new FieldUpdater<Contact, String>() {
public void update(int index, Contact object, String value) {
object.setLastName(value);
}
});
cellTable.setColumnWidth(lastNameColumn, 10, Unit.PCT);
// Add a text column to show the name.
TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact object) {
return object.getFirstName() + " " + object.getLastName();
}
};
cellTable.addColumn(nameColumn, "全名");
cellTable.setColumnWidth(nameColumn, 20, Unit.PCT);
// Add a date column to show the birthday.
DateCell dateCell = new DateCell();
Column<Contact, Date> dateColumn = new Column<Contact, Date>(dateCell) {
@Override
public Date getValue(Contact object) {
return object.birthday;
}
};
cellTable.addColumn(dateColumn, "生日");
cellTable.setColumnWidth(dateColumn, 40, Unit.PCT);
// Add a text column to show the address.
TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact object) {
return object.address;
}
};
cellTable.addColumn(addressColumn, "地址");
cellTable.setColumnWidth(addressColumn, 50, Unit.PCT);
// Associate an async data provider to the cellTable
// XXX: Use AsyncCallback in the method onRangeChanged
// to actaully get the data from the server side
AsyncDataProvider<Contact> provider = new AsyncDataProvider<Contact>() {
@Override
protected void onRangeChanged(HasData<Contact> display) {
// int start = display.getVisibleRange().getStart();
// int end = start + display.getVisibleRange().getLength();
// end = end >= CONTACTS.size() ? CONTACTS.size() : end;
// List<Contact> sub = CONTACTS.subList(start, end);
List<Contact> subs = new ArrayList<Contact>();
Contact c1 = new Contact("王", "栋", new Date(), "张家口下花园村");
Contact c2 = new Contact("张", "强", new Date(), "张家港市张家港村");
Contact c3 = new Contact("王", "小鹏", new Date(), "河北省保定市宝莲灯村");
Contact c4 = new Contact("时", "亮", new Date(), "北京市海淀区");
Contact c5 = new Contact("王", "小贺", new Date(), "承德市朝阳区");
Contact c6 = new Contact("李", "东墙", new Date(), "北京市花园村");
Contact c7 = new Contact("赵", "大胆", new Date(), "北京市花园村");
Contact c8 = new Contact("张", "启灵", new Date(), "北京市花园村");
Contact c9 = new Contact("王", "胖子", new Date(), "北京市花园村");
Contact c10 = new Contact("谢", "子扬", new Date(), "北京市昌平区谢家屯");
Contact c11 = new Contact("齐", "殿", new Date(), "北京市海淀区西北旺村");
Contact c12 = new Contact("楚", "穆", new Date(), "北京市亚运村");
Contact c13 = new Contact("冰", "窟窿", new Date(), "北京市奥运村");
subs.add(c1);
subs.add(c2);
subs.add(c3);
subs.add(c4);
subs.add(c5);
subs.add(c6);
subs.add(c7);
subs.add(c8);
subs.add(c9);
subs.add(c10);
subs.add(c11);
subs.add(c12);
subs.add(c13);
updateRowData(0, subs);
}
};
provider.addDataDisplay(cellTable);
// provider.updateRowCount(CONTACTS.size(), true);
SimplePager pager = new SimplePager();
pager.setDisplay(cellTable);
VerticalPanel vp = new VerticalPanel();
HorizontalPanel hp = new HorizontalPanel();
Button cellTableButton = new Button("提交");
cellTableButton.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
String select = selectedLabel.getText();
Window.alert(select);
/*
String[] selectArray = select.split(",");
if(selectArray!=null && selectArray.length>0){
for(int i=0;i<selectArray.length;i++){
Window.alert(selectArray[i]);
}
}
*/
}
});
hp.add(selectedLabel);
hp.add(cellTableButton);
vp.add(hp);
vp.setCellHorizontalAlignment(hp, HorizontalPanel.ALIGN_RIGHT);
vp.add(cellTable);
vp.add(pager);
vp.setCellHorizontalAlignment(pager, HorizontalPanel.ALIGN_CENTER);
// Add it to the root panel.
RootPanel.get().add(vp);
}
}
你是不是在linux下安装的gwt.如果不是主要原因可能是网速不行。要不直接找那个包先安装了在试试gwt。
我安装2.0.4时一次就通过了。在装2.4时公司就不行。家里网速好就安装好乐。
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.google.gwt.cell.client.CheckboxCell;
import com.google.gwt.cell.client.DateCell;
import com.google.gwt.cell.client.EditTextCell;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
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.VerticalPanel;
import com.google.gwt.view.client.AsyncDataProvider;
import com.google.gwt.view.client.DefaultSelectionEventManager;
import com.google.gwt.view.client.HasData;
import com.google.gwt.view.client.MultiSelectionModel;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SelectionChangeEvent;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class CellTableTest implements EntryPoint {
/**
* A simple data type that represents a contact.
*/
private static class Contact {
private String address;
private Date birthday;
private String name;
private String firstName;
private String lastName;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Contact(String firstName, String lastName, Date birthday,
String address) {
this.firstName = firstName;
this.lastName = lastName;
this.name = firstName + " " + lastName;
this.birthday = birthday;
this.address = address;
}
public static final ProvidesKey<Contact> KEY_PROVIDER = new ProvidesKey<Contact>() {
public Object getKey(Contact item) {
return item == null ? null : item.getName();
}
};
}
private Label selectedLabel = new Label();
public void onModuleLoad() {
// Create a CellTable.
final CellTable<Contact> cellTable = new CellTable<Contact>();
// Display n rows in one page
cellTable.setPageSize(10);
cellTable.setWidth("1024px");
// Add a selection model so we can select cells.
final MultiSelectionModel<Contact> selectionModel = new MultiSelectionModel<Contact>(
Contact.KEY_PROVIDER);
cellTable.setSelectionModel(selectionModel,
DefaultSelectionEventManager.<Contact> createCheckboxManager());
selectionModel.addSelectionChangeHandler(
new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
StringBuilder sb = new StringBuilder();
boolean first = true;
List<Contact> selected = new ArrayList<Contact>(selectionModel.getSelectedSet());
for (Contact value : selected) {
if (first) {
first = false;
} else {
sb.append(", ");
}
sb.append(value.getName());
}
selectedLabel.setText("选择:"+sb.toString());
}
});
Column<Contact, Boolean> checkColumn = new Column<Contact, Boolean>(
new CheckboxCell(true, false)) {
@Override
public Boolean getValue(Contact object) {
return selectionModel.isSelected(object);
}
};
cellTable.addColumn(checkColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));
cellTable.setColumnWidth(checkColumn, 10, Unit.PX);
Column<Contact, String> firstNameColumn = new Column<Contact, String>(
new EditTextCell()) {
@Override
public String getValue(Contact object) {
return object.getFirstName();
}
};
cellTable.addColumn(firstNameColumn, "名字");
firstNameColumn.setFieldUpdater(new FieldUpdater<Contact, String>() {
public void update(int index, Contact object, String value) {
// Called when the user changes the value.
object.setFirstName(value);
}
});
cellTable.setColumnWidth(firstNameColumn, 10, Unit.PCT);
Column<Contact, String> lastNameColumn = new Column<Contact, String>(
new EditTextCell()) {
@Override
public String getValue(Contact object) {
return object.getLastName();
}
};
lastNameColumn.setSortable(true);
cellTable.addColumn(lastNameColumn, "姓");
lastNameColumn.setFieldUpdater(new FieldUpdater<Contact, String>() {
public void update(int index, Contact object, String value) {
object.setLastName(value);
}
});
cellTable.setColumnWidth(lastNameColumn, 10, Unit.PCT);
// Add a text column to show the name.
TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact object) {
return object.getFirstName() + " " + object.getLastName();
}
};
cellTable.addColumn(nameColumn, "全名");
cellTable.setColumnWidth(nameColumn, 20, Unit.PCT);
// Add a date column to show the birthday.
DateCell dateCell = new DateCell();
Column<Contact, Date> dateColumn = new Column<Contact, Date>(dateCell) {
@Override
public Date getValue(Contact object) {
return object.birthday;
}
};
cellTable.addColumn(dateColumn, "生日");
cellTable.setColumnWidth(dateColumn, 40, Unit.PCT);
// Add a text column to show the address.
TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact object) {
return object.address;
}
};
cellTable.addColumn(addressColumn, "地址");
cellTable.setColumnWidth(addressColumn, 50, Unit.PCT);
// Associate an async data provider to the cellTable
// XXX: Use AsyncCallback in the method onRangeChanged
// to actaully get the data from the server side
AsyncDataProvider<Contact> provider = new AsyncDataProvider<Contact>() {
@Override
protected void onRangeChanged(HasData<Contact> display) {
// int start = display.getVisibleRange().getStart();
// int end = start + display.getVisibleRange().getLength();
// end = end >= CONTACTS.size() ? CONTACTS.size() : end;
// List<Contact> sub = CONTACTS.subList(start, end);
List<Contact> subs = new ArrayList<Contact>();
Contact c1 = new Contact("王", "栋", new Date(), "张家口下花园村");
Contact c2 = new Contact("张", "强", new Date(), "张家港市张家港村");
Contact c3 = new Contact("王", "小鹏", new Date(), "河北省保定市宝莲灯村");
Contact c4 = new Contact("时", "亮", new Date(), "北京市海淀区");
Contact c5 = new Contact("王", "小贺", new Date(), "承德市朝阳区");
Contact c6 = new Contact("李", "东墙", new Date(), "北京市花园村");
Contact c7 = new Contact("赵", "大胆", new Date(), "北京市花园村");
Contact c8 = new Contact("张", "启灵", new Date(), "北京市花园村");
Contact c9 = new Contact("王", "胖子", new Date(), "北京市花园村");
Contact c10 = new Contact("谢", "子扬", new Date(), "北京市昌平区谢家屯");
Contact c11 = new Contact("齐", "殿", new Date(), "北京市海淀区西北旺村");
Contact c12 = new Contact("楚", "穆", new Date(), "北京市亚运村");
Contact c13 = new Contact("冰", "窟窿", new Date(), "北京市奥运村");
subs.add(c1);
subs.add(c2);
subs.add(c3);
subs.add(c4);
subs.add(c5);
subs.add(c6);
subs.add(c7);
subs.add(c8);
subs.add(c9);
subs.add(c10);
subs.add(c11);
subs.add(c12);
subs.add(c13);
updateRowData(0, subs);
}
};
provider.addDataDisplay(cellTable);
// provider.updateRowCount(CONTACTS.size(), true);
SimplePager pager = new SimplePager();
pager.setDisplay(cellTable);
VerticalPanel vp = new VerticalPanel();
HorizontalPanel hp = new HorizontalPanel();
Button cellTableButton = new Button("提交");
cellTableButton.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
String select = selectedLabel.getText();
Window.alert(select);
/*
String[] selectArray = select.split(",");
if(selectArray!=null && selectArray.length>0){
for(int i=0;i<selectArray.length;i++){
Window.alert(selectArray[i]);
}
}
*/
}
});
hp.add(selectedLabel);
hp.add(cellTableButton);
vp.add(hp);
vp.setCellHorizontalAlignment(hp, HorizontalPanel.ALIGN_RIGHT);
vp.add(cellTable);
vp.add(pager);
vp.setCellHorizontalAlignment(pager, HorizontalPanel.ALIGN_CENTER);
// Add it to the root panel.
RootPanel.get().add(vp);
}
}
评论
2 楼
tomhat
2011-12-30
ccx410 写道
安装gwt报错,unable to retrieve osgi.bundle,com.google.gwt.eclipse.sdkbundle如何解决
你是不是在linux下安装的gwt.如果不是主要原因可能是网速不行。要不直接找那个包先安装了在试试gwt。
我安装2.0.4时一次就通过了。在装2.4时公司就不行。家里网速好就安装好乐。
1 楼
ccx410
2011-12-19
安装gwt报错,unable to retrieve osgi.bundle,com.google.gwt.eclipse.sdkbundle如何解决
发表评论
-
Apache HTTPClient 忽略证书
2019-01-25 15:03 1492/** * httpclient4.5.2版 * ... -
HTTP 返回码
2019-01-24 15:28 379HTTP1.1新增了五种请求方法:OPTIONS、PUT、PA ... -
Java SizeToHuman 大小转换为mb kb tb等
2017-08-21 15:12 1568public class TestSizeToHuman ... -
javascript 监听键盘事件
2017-04-14 10:38 2754var ie; var firefox; ... -
JavaScript从数组中删除指定值元素的方法
2016-10-11 13:13 713下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函 ... -
CSS几种特效整理
2016-04-19 09:55 494css用伪类before和after制作三角形箭头网上有一堆教 ... -
java常规格式化说明
2016-01-20 17:27 1333转 换 符说 明 ... -
java验证是否包含特殊字符/\:*?"<>
2016-01-05 15:25 8712public class MatchTest { ... -
js 一些知识,js获取contxtPath
2015-11-12 13:49 1151var num = 1; var str = '1'; ... -
IE指定文档模式
2015-10-15 15:21 918对于 Web 开发人员来说,文本兼容性是一个要考虑的重要问题。 ... -
JSP和JSTL获取服务器参数
2015-09-11 13:57 1157<%@ page language="java ... -
java计算时间差比较时间大小
2015-05-20 10:53 1058今天需要比较时间在网上找到然后写下: 比如:现在是:200 ... -
java发邮件
2014-11-19 15:37 1159一、 import java.util.Date; im ... -
java log4j.properties
2014-11-18 09:30 864log4j.properties配置文件如下: log4j ... -
java获得ip地址
2014-11-17 18:18 1268public String getIpAddr(Htt ... -
java下载文件
2014-11-07 10:57 1031// 文件名称中文乱码new String(filename. ... -
Android中RelativeLayout各个属性的含义
2014-10-11 15:06 830android:layout_above="@id ... -
Http发送请求
2014-09-17 15:01 846package wzh.Http; import j ... -
如何在一个页面上让多个jQuery版本共存
2014-09-10 10:22 866如何在一个页面上让多个jQuery共存呢?比如jquery-1 ... -
导出数据到excel
2014-09-03 16:20 1169/** * */ package com.chin ...
相关推荐
java网页表格组件 GWT Advanced Table
基于java的开发源码-网页表格组件 GWT Advanced Table.zip 基于java的开发源码-网页表格组件 GWT Advanced Table.zip 基于java的开发源码-网页表格组件 GWT Advanced Table.zip 基于java的开发源码-网页表格组件 GWT...
网页表格组件 GWT Advanced Table
网页表格组件 GWT Advanced Table.7z
基于Java的网页表格组件 GWT Advanced Table.zip
基于java的网页表格组件 GWT Advanced Table.zip
java源码:网页表格组件 GWT Advanced Table.zip
基于Java的实例源码-网页表格组件 GWT Advanced Table.zip
gwt 练习gwt 练习gwt 练习gwt 练习
EXT-GWT2.0.1+API+DOC gwtdesigner Gwt-Ext基础-中级-进阶 GWT快速开发 GWT入门 GWT中文教程
fwefwefwGWT工具GWT工具GWT工具GWT工具GWT工具GWT工具
gwt 入门,是你开始学习gwt的大道 安装之后的目录结构为: C:\程序开发\Java\gwt-windows-1.4.59 doc(文档目录,开发文档和Java API文档) samples(示例代码目录,非常有名的KitchenSink示例代码即在此目录中)...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
Gwt中文手册,GWt入门Gwt中文手册,GWt入门Gwt中文手册,GWt入门
网页表格组件 GWT Advanced Table源码示例
GWT(Google Web Toolkit) 是 Google 最近推出的一个开发 Ajax 应用的框架,它支持用 Java 开发和调试 Ajax 应用,本文主要介绍如何利用 GWT 进行 Ajax 的开发。 Ajax技术是当前开发web应用的非常热门的技术,也是Web...
很好的资源,在这边分享下,提供给想要寻找GWT资源的兄弟姐妹们 如果哪位兄弟有好的资源不要忘了分享啊
2. Hello GWT 3. 模块 4. JSNI 5. 在GWT中使用XML 6. GWT控件详解 7. 使用GWT控件 8. GWT-RPC 9. Ext GWT 10. (实战)俄罗斯方块游戏 11. (实战)费用申请审批流程 12. GWT与Flex整合 13. 图片缓存 CSS Sprite 14. ...
用Maven创建GWT_SmartGWT项目,从而可利用Maven进行管理,以及持续集成。
smartgwt最新版本GWT的DEMO 谷歌web工具箱实例