当前位置: 代码迷 >> Web前端 >> 筹建简单的EXT-GWT(GXT)的开发环境(一)
  详细解决方案

筹建简单的EXT-GWT(GXT)的开发环境(一)

热度:547   发布时间:2012-09-02 21:00:34.0
搭建简单的EXT-GWT(GXT)的开发环境(一)
随便写着玩玩.不要太认真哦^^

这里就不废话了,假设你的 eclipse 以及 Google Plugin for Eclipse 都安装好了

下载地址:http://code.google.com/intl/zh-CN/webtoolkit/download.html

这里强调下就是说GWT Designer其实没必要安装..

然后就是 gxt的下载地址(2.2.4是在gwt2.3上面运行的,估计在gwt2.2.0上面运行也是没问题的.不过我没升级)

http://dev.sencha.com/deploy/gxt-2.2.3.zip

我的开发环境组合是 eclipse3.6+gwt2.2.0+gxt(ext-gwt)2.2.3-gwt22+spring2.5

一般来说,这个时候安装Google Plugin for Eclipse后默认的gwt版本是2.3的,如果你用这个版本的gwt的话,那么gxt应该去下载

2.2.4的版本就可以了

如果按照我现在的配置环境的话,你需要修改一下gwt版本...

把下载下来的gwt2.2.0的sdk解压后,点击eclipse的
window->Preferences->Google->Web Toolkit
将gwt2.2.0添加进来即可

然后就是新建项目了,创建时候注意选择gwt的版本,然后取消掉GAE的支持即可.





项目创建好了,我们就直接来运行下看看能不能正常显示吧.
展开client包,对到你和你项目同名的java类点击右键->run as->web Application
这时,注意控制台输出(貌视什么都没输出--!),点击控制台旁边的选项卡





对到这个url地址点右键->Open就可以啦~~不出意外的话,你应该能在浏览器里面看到点东西...这个没什么CSS装饰的页面是不是

有点难看啊XD..没事,呆会就把他改造成gxt版的吧:)

如果你是第一次运行gwt程序的话,会被提示需要下载一个GWT Developer Plugin
下面附件里面送一个在chrome上面用的插件..有时候"长城"扯拐..导致google的HTTPS不能访问~

如果你用IE6的话.................................OTZ

接下来,加入gxt的功能吧.

1.展开war/WEB-INF/lib,把下载的gxt2.2.3解压,然后把里面的gxt-2.2.3-gwt22.jar复制进来,然后添加到classpath即可.

2.把gxt的一些资源文件导入进来.具体位置在解压包中的\resources这文件夹中.直接复制到工程的war中.我这里是在war下建立了一个gxt文件夹来存放这些资源.

3.打开war下的GoogleMapV3.html,在<head>中添加css进来就可以了.
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link type="text/css" rel="stylesheet" href="GoogleMapV3.css">
	<link rel="stylesheet" type="text/css" href="gxt/css/gxt-all.css" />
    <title>Web Application Starter Project</title>
    <script type="text/javascript" language="javascript" src="googlemapv3/googlemapv3.nocache.js"></script>
  </head>

  <body>

    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>

  </body>
</html>



4.添加gxt模块到项目中,我这里修改的是GoogleMapV3.gwt.xml文件
<inherits name="com.extjs.gxt.ui.GXT" />


5.然后呢,打开GoogleMapV3.java(你的可能不是这个名字),里面好多代码哦..老火的很..我第一次用的gwt1.6都没这么多..不管了

这些个类啊是干啥子的了,先删~~~只留下下面的代码就好了~这个onModuleLoad就是入口了.
public class GoogleMapV3 implements EntryPoint {
	
	public void onModuleLoad() {
		
	}
}


好了,其实gxt和gwt的区别就是gxt中的button什么的东西都是有CSS装饰过,有报表,有比较炫的效果等等~,比较好看..然后就是gxt中的事件处理和gwt的稍微有点区别(其实只是代码的样子不一样)~不过在gxt第3版(预览版)中,gxt把事件处理模式改成和gwt一样了.

6.最后添加一些代码进去
import com.extjs.gxt.ui.client.GXT;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.util.Theme;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.Viewport;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.layout.CenterLayout;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.RootPanel;

public class GoogleMapV3 implements EntryPoint {

	private final GreetingServiceAsync greetingService = GWT
			.create(GreetingService.class);

	public void onModuleLoad() {
		//设置样式
		GXT.setDefaultTheme(Theme.GRAY, true);
		Button sendButton = new Button("发 送");
		final TextField<String> nameField = new TextField<String>();
		nameField.setFieldLabel("GXT 用户");
		nameField.setAllowBlank(false);
		Viewport view = new Viewport();
		view.setLayout(new CenterLayout());

		FormData formData = new FormData("-20");

		FormPanel panel = new FormPanel();
		panel.setFrame(true);
		panel.setHeading("Simple");
		panel.setWidth(350);

		panel.add(nameField, formData);

		panel.setButtonAlign(HorizontalAlignment.CENTER);
		panel.addButton(sendButton);

		//给发送按钮添加事件
		sendButton.addSelectionListener(new SelectionListener<ButtonEvent>() {

			@Override
			public void componentSelected(ButtonEvent ce) {
				greetingService.greetServer(nameField.getValue(), new AsyncCallback<String>() {

					@Override
					public void onSuccess(String result) {
						MessageBox.alert("成功", result, null);
					}

					@Override
					public void onFailure(Throwable caught) {
						MessageBox.alert("失败", caught.getMessage(), null);
					}
				});
			}
		});

		view.add(panel);

		RootPanel.get().add(view);

	}
}


OK..运行一下看看是不是有效果出来了喃?







下次再来说怎么加入spring的servlet的拦截功能.
  相关解决方案