Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4030757
  • 博文数量: 626
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 11080
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-23 13:08
文章分类

全部博文(626)

文章存档

2015年(72)

2014年(48)

2013年(506)

分类: Html/Css

2013-09-23 09:38:27

GWT笔记(2)


一、用户界面(User Interface)
在开发GWT应用程序时要注意一件事,它的开发非常像Swing,SWT,甚至是VB。你创建按钮、列表、表单,经事件监听器与之交互。你进行布局,试着让它们在一定的屏幕分辨率和屏幕尺寸下看起来更好看。主要的不同之处在于GWT应用是显示在Web浏览器上,它涉及到HTML页面。
传统的Web应用程序是以一系列的HTML页面为结构,并以之导航的。
1、与HTML的联系
每一个GWT应用程序里面都存在一个HTML页面,它可以是一个静态的页面,或者是服务器端的页面如JSP,Struts,Ruby on Rails等。
实际上,MyApp.html存在于public目录,意味着它将被一字不差的复制到最终的服务器端的部署区域,如果页面还链接着图片,样式表等,它们也都会复制到同样的目录下。
在HTML页面代码的顶部需要meta标签来联系GWT组件。
如:
一个GWT组件是一个客户端代码和资源的集合。名为com.mycompany.MyApp的组件被定义到组件文件src/com/mycompany/MyApp.gwt.xml中。
-----------------------------------------------

 
 
 
 

-----------------------------------------------
在逻辑上,当HTML页面载入后,GWT查看meta标签,读入xml文件并得到类名,在入口点类中开始调用代码。
2、入口点(Entry Point)
入口点类(MyApp)扩展了入口点接口并提供了一个方法onModuleLoad()。这个方法在构造GWT应用程序用户界面中起作用。
MyProject/src/com/xyz/client/MyApp.java
-----------------------------------------------
public void onModuleLoad(){
  final Button button=new Button("Click me");
  final Label label=new Label();
  //...
-----------------------------------------------
上面的脚手架代码创建了两个GWT用户界面元素,一个按钮和一个标签。
如果要追溯和浏览HTML文件,其代码底部有两个占位符用于动态内容:
MyProject/src/com/xyz/public/MyApp.html
-----------------------------------------------


 
   
   
 

-----------------------------------------------
Java代码将通过“id=”来引用并填充你创建的按钮和标签。
MyProject/src/com/xyz/client/MyApp.java
-----------------------------------------------
RootPanel.get("slot1").add(button);
RootPanel.get("slot2").add(label);
-----------------------------------------------
上面的表定义了怎样使用小部件在屏幕上布局。
还有一个更好的布局方式是使用面板(Panel)。GWT面板也是一个小部件,它能容纳一个或多个小部件并以特殊的方式管理它们。
例如:你可以创建一个水平面板(Horizontal Panel),在其上加入按钮和标签,再把该面板加入到RootPanel的页面。即:
RootPanel.get().add(hPanel);
3、事件(Event)
继续看刚才的例子,让按钮做一些事:
MyProject/src/com/xyz/client/MyApp.java
-----------------------------------------------
button.addClickListener(new ClickListener(){
  public void onClick(Widget sender){
    ...
-----------------------------------------------
4、小部件(Widget)
(1)文件上传 FileUpload
设置输入element的名字并使用setName()方法提交到服务器。
(2)伸缩表和网格 FlexTable and Grid
表可以包含文本、HTML和其它任意小部件。网格总是相同的,有固定的尺寸。
使用setText(),setHTML(),setWidget()方法来加入单元项,使用getCellFormatter()来定制单元的外观。单元可以跨越多行或多列。
(3)Frame and NamedFrame
此部件包裹在HTML的