使用的是google的插件.
最新的eclipse 3.5
gwt 版本是 1.7.
花了一天时间写点demo 看看这些组件都怎么使用的..
1
GWT1.7版本下面是不推荐使用Listener了.而改用Handler了.
似乎这样每一个button都可以添加子节点handler了.
然后在上面编写代码.
2
在内部类里面要调用父类的属性的时候.要添加fianl字段.
但是这并不是说这个类不可修改.这类的属性可以修改.
3.要是保存临时数据.
可以通过创建数组的方式去实现.
比如 final int[] userNo = { 0 };
然后在内部类里面
testRPCButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
userNo[0] = 1;
});
}
});
通过这样的方式进行赋值.
4,都换成handler.
然后在这里面对其他Wiget进行操作.(这些wiget必须都是final的.)
5,在client里面是不可以用java.util.Random()的.
作为替换的使用:
com.google.gwt.user.client.Random
Random.nextInt() 下面的静态方法取得.
6,面板是没有addHandler的方法的.
7.在rcp当中要做的:
1) 创建借口并(在client包下)添加@RemoteServiceRelativePath("testRPC")
testRPC是定义的url.
2)借口必须.extends RemoteService
3)创建interface TestRPCAsync 回调接口.
4)实现接口.(在servic包下.)
5)在web.xml里面添加servlet(很重要否则报错:
2009-9-7 8:18:18 com.google.appengine.tools.development.LocalResourceFileServlet doGet
WARNING: No file found for: /test002/testRPC
<!-- Servlets -->
<servlet>
<servlet-name>testRPC</servlet-name>
<servlet-class>com.demo.test.server.TestRPCImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>testRPC</servlet-name>
<url-pattern>/test002/testRPC</url-pattern>
</servlet-mapping>
6)gwt中声明接口.
private final TestRPCAsync testRPCAsync = GWT.create(TestRPC.class);
7)在onclick中使用.
testRPCButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
System.out.println("here call function.");
testRPCAsync.getString(new AsyncCallback<String>() {
public void onSuccess(String result) {
System.out.println(result);
Window.alert(result);
}
public void onFailure(Throwable caught) {
}
});
}
});
详细参考附件代码.
- public class Test002 implements EntryPoint {
- /**
- * This is the entry point method.
- */
- public void onModuleLoad() {
- System.out.println("系统加载的时候显示....");
- // /butotn测试开始.
- final Button button_1 = new Button("测试按钮.");
- button_1.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- System.out.println("get here.***");
- Window.alert("test");
- }
- });
- button_1.addKeyDownHandler(new KeyDownHandler() {
- public void onKeyDown(KeyDownEvent event) {
- System.out.println("添加事件.");
- System.out.println(event.toString());
- }
- });
- // /butotn测试结束.
- RootPanel.get().add(new HTML("<br>Button测试"));
- RootPanel.get().add(button_1);
- final CheckBox checkBox1 = new CheckBox("checkBox1.");
- final CheckBox checkBox2 = new CheckBox("checkBox2.");
- checkBox1.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- // TODO Auto-generated method stub
- System.out.println("点击了checkbox1.");
- if (checkBox1.getValue()) {
- checkBox2.setValue(false);
- } else {
- checkBox2.setValue(true);
- }
- // Window.alert("check it .");
- }
- });
- checkBox2.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- // TODO Auto-generated method stub
- System.out.println("点击了checkbox2.");
- if (checkBox2.getValue()) {
- checkBox1.setValue(false);
- } else {
- checkBox1.setValue(true);
- }
- // Window.alert("check it .");
- }
- });
- RootPanel.get().add(new HTML("<br>checkBox测试."));
- RootPanel.get().add(checkBox1);
- RootPanel.get().add(checkBox2);
- // checkbox测试结束.
- final RadioButton radio1 = new RadioButton("class", "obj_1");
- final RadioButton radio2 = new RadioButton("class", "obj_2");
- final RadioButton radio3 = new RadioButton("class", "obj_3");
- RootPanel.get().add(new HTML("<br>RadioButton测试."));
- RootPanel.get().add(radio1);
- RootPanel.get().add(radio2);
- RootPanel.get().add(radio3);
- // Radio测试.将radio进行多个选择.
- final TextBox textBox = new TextBox();
- textBox.setTextAlignment(TextBoxBase.ALIGN_RIGHT);
- // 设置里面的文本内容成右对齐.
- final Label label_1 = new Label();
- textBox.addKeyUpHandler(new KeyUpHandler() {
- public void onKeyUp(KeyUpEvent event) {
- // 说明.用changeListener的时候.在光标未移出的时候不会改变.
- // TODO Auto-generated method stub
- String temp = textBox.getText();
- System.out.println(temp);
- // System.out.println(event.getNativeKeyCode());
- label_1.setText(temp);
- }
- });
- // KeyboardListenerAdapter
- RootPanel.get().add(new HTML("<br>TextBox测试."));
- RootPanel.get().add(textBox);
- RootPanel.get().add(new HTML("您输入的参数."));
- RootPanel.get().add(label_1);
- // TextBox测试结束.
- final ListBox listBox1 = new ListBox();
- listBox1.setVisibleItemCount(6);// 设置成可选数目是6.
- listBox1.addItem("001");
- listBox1.addItem("002");
- listBox1.addItem("003");
- listBox1.addItem("004");
- final ListBox listBox2 = new ListBox();
- listBox2.setVisibleItemCount(6);
- ;// 设置成可选数目是6.
- listBox1.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- int id = listBox1.getSelectedIndex();
- listBox2.clear();// 清除所有选项.
- for (int i = 0; i < 4; i++) {
- listBox2.addItem(id + "city:\t" + i);
- }
- }
- });
- RootPanel.get().add(new HTML("<br>ListBox测试."));
- RootPanel.get().add(listBox1);
- RootPanel.get().add(listBox2);
- // ListBox结束.
- Frame frame = new Frame();
- frame.setUrl("http://ww.google.com");
- RootPanel.get().add(new HTML("<BR>Frame测试."));
- RootPanel.get().add(frame);
- // Frame测试结束.
- PushButton pushButton = new PushButton("PushButton");
- pushButton.setWidth("180px");
- RootPanel.get().add(new HTML("<BR>PushButton测试."));
- RootPanel.get().add(pushButton);
- // 相似的是togglebutton.PushButton测试结束.
- RichTextArea area = new RichTextArea();
- area.setHTML("<font color='red'>abc</font>");
- // area.BasicFormatter.setBackColor("blue");
- RootPanel.get().add(new HTML("<BR>RichTextArea测试."));
- RootPanel.get().add(area);
- // 富文本编辑器设置BasicFormatter还不会使用.//结束.
- MenuBar menuBarMain = new MenuBar();
- Command cmd = new Command() {
- public void execute() {
- Window.alert("点击Menu.");
- }
- };
- MenuBar bar01 = new MenuBar(true);
- // 设置true的时候.显示竖向菜单.
- bar01.addItem("001", cmd);
- bar01.addItem("002", cmd);
- bar01.addItem("003", (new MenuBar(true).addItem("子菜单.", cmd)
- .getParentMenu()));
- // 偷懒的写法.没有去创建一个类.
- // 主菜单显示.
- menuBarMain.addItem("File", bar01);
- menuBarMain.addItem("Save", bar01);
- menuBarMain.addItem("Exit", bar01);
- RootPanel.get().add(new HTML("<BR>MenuBar测试."));
- RootPanel.get().add(menuBarMain);
- RootPanel.get().add(new HTML("<BR>"));
- // 富文本编辑器设置BasicFormatter还不会使用.//结束.
- final TabBar tabBar = new TabBar();
- final Label tabBarLabel = new Label();
- final String[] tabBarLabelText = { "这个是第1个TabBar.", "这个是第2个TabBar.",
- "这个是第3个TabBar.", "这个是新添加的第1个TabBar.", "这个是新添加的第2个TabBar." };
- tabBar.addTab("这个是第1个TabBar.");
- tabBar.addTab("这个是第2个TabBar.");
- tabBar.addTab("这个是第3个TabBar.");
- final int[] tabBarAddId = new int[] { -1, -1 };
- // 设置一个数组变量存储值.这里不可以是一个int型.这样会改变不了值.
- tabBar.addSelectionHandler(new SelectionHandler<Integer>() {
- public void onSelection(SelectionEvent<Integer> event) {
- System.out.println(tabBar.getSelectedTab());
- tabBarLabel.setText(tabBarLabelText[tabBar.getSelectedTab()]);
- }
- });
- final Button button_tab_1 = new Button("TabBar切换1.");
- final Button button_tab_2 = new Button("TabBar切换2.");
- button_tab_1.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- if (tabBarAddId[0] != -1) {
- tabBar.selectTab(tabBarAddId[0]);
- tabBarLabel
- .setText(tabBarLabelText[tabBar.getSelectedTab()]);
- } else {
- tabBarAddId[0] = tabBar.getTabCount();
- tabBar.insertTab("TabBar切换1.", tabBar.getTabCount());
- tabBar.selectTab(tabBarAddId[0]);
- tabBarLabel
- .setText(tabBarLabelText[tabBar.getSelectedTab()]);
- }
- }
- });
- button_tab_2.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- if (tabBarAddId[1] != -1) {
- tabBar.selectTab(tabBarAddId[1]);
- tabBarLabel
- .setText(tabBarLabelText[tabBar.getSelectedTab()]);
- } else {
- tabBarAddId[1] = tabBar.getTabCount();
- tabBar.insertTab("TabBar切换2.", tabBar.getTabCount());
- tabBar.selectTab(tabBarAddId[1]);
- tabBarLabel
- .setText(tabBarLabelText[tabBar.getSelectedTab()]);
- }
- }
- });
- RootPanel.get().add(new HTML("<BR>MenuBar测试."));
- RootPanel.get().add(tabBar);
- RootPanel.get().add(tabBarLabel);
- RootPanel.get().add(button_tab_1);
- RootPanel.get().add(button_tab_2);
- // 设置一个数组变量存储值.这里不可以是一个int型.这样会改变不了值.
- final Grid grid = new Grid(3, 3);
- // 设置网格的数量.3X3的网格.
- grid.setBorderWidth(2);
- // 设置边线的宽度是2.
- grid.setWidth("100%");
- // 设置显示宽是100%.
- grid.setWidget(0, 0, new HTML("hello!"));
- grid.setWidget(1, 1, new HTML("hello!"));
- grid.setWidget(2, 2, new HTML("hello!"));
- grid.setWidget(1, 2, new HTML("hello!"));
- // 插入测试数据.数据是从(0,0)开始到(2,2)结束.
- RootPanel.get().add(new HTML("<BR>Grid测试."));
- RootPanel.get().add(grid);
- grid.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- // TODO Auto-generated method stub
- System.out.print("点击了:["
- + grid.getCellForEvent(event).getRowIndex());
- // 获得行.
- System.out.println(","
- + grid.getCellForEvent(event).getCellIndex() + "]");
- // 获得列.
- }
- });
- // Grid测试结束.
- final FlexTable flexTable = new FlexTable();
- // 和grid的区别是不用设置大小.
- flexTable.setWidth("100%");
- flexTable.setBorderWidth(1);
- flexTable.setCellPadding(1);
- flexTable.setCellSpacing(1);
- // 设置边框.
- for (int i = 0; i < 16; i++) {
- flexTable.setText(i / 4, i % 4, "id:" + i);
- }
- flexTable.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- System.out.print("点击了:["
- + flexTable.getCellForEvent(event).getRowIndex());
- // 获得行.
- System.out
- .println(","
- + flexTable.getCellForEvent(event)
- .getCellIndex() + "]");
- // 获得列.
- }
- });
- RootPanel.get().add(new HTML("<BR>FlexTable测试."));
- RootPanel.get().add(flexTable);
- // FlexTable测试结束.
- RootPanel.get().add(new HTML("<BR>HTMLTable测试."));
- // RootPanel.get().add();
- // htmlTable测试结束.
- final Tree tree = new Tree();
- TreeItem treeItem1 = new TreeItem("01");
- treeItem1.addItem(new TreeItem("sub01"));
- TreeItem treeItem2 = new TreeItem("02");
- treeItem2.addItem(new TreeItem("sub02"));
- TreeItem treeItem3 = new TreeItem("03");
- TreeItem treeItem3_1 = new TreeItem("03_1");
- treeItem3.addItem(treeItem3_1);
- TreeItem treeItem3_2 = new TreeItem("03_2");
- treeItem3_1.addItem(treeItem3_2);
- TreeItem treeItem3_3 = new TreeItem("03_3");
- treeItem3_2.addItem(treeItem3_3);
- tree.addItem(treeItem1);
- tree.addItem(treeItem2);
- tree.addItem(treeItem3);
- tree.addOpenHandler(new OpenHandler<TreeItem>() {
- public void onOpen(OpenEvent<TreeItem> event) {
- System.out.println("tree onOpen:\t" + event.getTarget().getHTML());
- }
- });
- tree.addCloseHandler(new CloseHandler<TreeItem>() {
- public void onClose(CloseEvent<TreeItem> event) {
- System.out.println("tree onClose:\t" + event.getTarget().getHTML());
- }
- });
- tree.addSelectionHandler(new SelectionHandler<TreeItem>() {
- public void onSelection(SelectionEvent<TreeItem> event) {
- // TODO Auto-generated method stub
- System.out.println("tree onSelection:\t" + tree.getSelectedItem().getHTML());
- }
- });
- RootPanel.get().add(new HTML("<BR>Tree测试."));
- RootPanel.get().add(tree);
- // Tree测试结束.
- Image image = new Image();
- image.setUrl("ui-icons.png");
- image.setVisibleRect(0, 192, 16, 16);
- final PushButton button_image = new PushButton(image);
- button_image.setWidth("16px");
- button_image.setHeight("16px");
- button_image.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- Window.alert("imageButon");
- }
- });
- RootPanel.get().add(new HTML("<BR>Image测试."));
- RootPanel.get().add(new Image("ui-icons.png",0, 192, 16, 16));
- //直接将图片参数设置.//这里的image被button用了.显示不了.
- //要重新定义一个button才可以显示.
- RootPanel.get().add(new HTML("<BR>Image测试."));
- RootPanel.get().add(button_image);
- // Image测试结束.
- RootPanel.get().add(new HTML("<BR>#######################布局UI######################."));
- ScrollPanel scrollPanel = new ScrollPanel();
- String strText = "";
- for(int i = 0;i < 100; i ++){
- strText +="ABCDEFGHI";
- }
- scrollPanel.setSize("100px", "100px");
- scrollPanel.setWidget(new HTML(strText));
- scrollPanel.setVisible(true);
- RootPanel.get().add(new HTML("<BR>Panel测试."));
- RootPanel.get().add(scrollPanel);
- // ScrollPanel测试结束.
- final Button button_PopupPanel = new Button("PopupPanelButton");
- button_PopupPanel.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- System.out.println("click");
- //新建一个popup.
- /**popupPanel.setPopupPositionAndShow(new PopupPanel.PositionCallback() {
- public void setPosition(int offsetWidth, int offsetHeight) {
- int left = (Window.getClientWidth() -offsetWidth)/3;
- int top = (Window.getClientHeight() - offsetHeight) /3;
- popupPanel.setPopupPosition(left, top);
- }
- });
- */
- final PopupPanel popupPanel = new PopupPanel();
- Button closeButton = new Button("close");
- closeButton.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- popupPanel.hide();
- }
- });
- VerticalPanel verticalPanel = new VerticalPanel();
- verticalPanel.add(new HTML("test Popup."));
- verticalPanel.add(closeButton);
- popupPanel.add(verticalPanel);
- popupPanel.center();
- }
- });
- RootPanel.get().add(new HTML("<BR>PopupPanel测试."));
- RootPanel.get().add(button_PopupPanel);
- //RootPanel.get().add(popupPanel);
- // PopupPanel测试结束.
- //
- final DialogBox dialogBox = new DialogBox(false,true);
- //false:是否自动隐藏.(单击DialogBox之外的部分.true:是否是模式对话框.
- dialogBox.setTitle("弹出对话框.");
- dialogBox.setText("弹出对话框.");
- VerticalPanel verticalPanelDialog = new VerticalPanel();
- verticalPanelDialog.add(new HTML("测试对话框."));
- Button button_dialog = new Button("确定.");
- button_dialog.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- dialogBox.hide();
- }
- });
- verticalPanelDialog.add(button_dialog);
- Button button_dialog_show = new Button("显示对话框.");
- //控制对话框显示.
- button_dialog_show.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- dialogBox.center();
- dialogBox.show();
- }
- });
- dialogBox.add(verticalPanelDialog);
- //将面板添加到dialog里面
- RootPanel.get().add(new HTML("<BR>DialogBox测试."));
- RootPanel.get().add(button_dialog_show);
- // DialogBox测试结束.
- DockPanel dockPanel = new DockPanel();
- dockPanel.add(new HTML("NORTH"), DockPanel.NORTH);
- dockPanel.add(new HTML("SOUTH"), DockPanel.SOUTH);
- dockPanel.add(new HTML("WEST"), DockPanel.WEST);
- dockPanel.add(new HTML("EAST"), DockPanel.EAST);
- dockPanel.add(new HTML("CENTER"), DockPanel.CENTER);
- dockPanel.setBorderWidth(1);
- RootPanel.get().add(new HTML("<BR>DockPanel测试."));
- RootPanel.get().add(dockPanel);
- // DockPanel测试结束.
- HorizontalPanel horizontalPanel = new HorizontalPanel();
- horizontalPanel.add(new HTML("test01"));
- horizontalPanel.add(new HTML("test02"));
- horizontalPanel.add(new HTML("test03"));
- horizontalPanel.add(new HTML("test04"));
- horizontalPanel.setBorderWidth(1);
- RootPanel.get().add(new HTML("<BR>HorizontalPanel测试."));
- RootPanel.get().add(horizontalPanel);
- // HorizontalPanel测试结束.
- VerticalPanel verticalPanel = new VerticalPanel();
- verticalPanel.add(new HTML("test01"));
- verticalPanel.add(new HTML("test02"));
- verticalPanel.add(new HTML("test03"));
- verticalPanel.add(new HTML("test04"));
- verticalPanel.setBorderWidth(1);
- RootPanel.get().add(new HTML("<BR>VerticalPanel测试."));
- RootPanel.get().add(verticalPanel);
- // VerticalPanel测试结束.
- FlowPanel flowPanel = new FlowPanel();
- for(int i = 0; i < 20; i ++){
- flowPanel.add(new HTML("test"+i));
- }
- RootPanel.get().add(new HTML("<BR>FlowPanel测试."));
- ScrollPanel scrollPaneFlow = new ScrollPanel();
- scrollPaneFlow.add(flowPanel);
- RootPanel.get().add(scrollPaneFlow);
- // FlowPanel测试结束.
- StackPanel stackPanel = new StackPanel();
- VerticalPanel verticalPanel_1 = new VerticalPanel();
- verticalPanel_1.add(new HTML("test01"));
- verticalPanel_1.add(new HTML("test02"));
- verticalPanel_1.add(new HTML("test03"));
- verticalPanel_1.add(new HTML("test04"));
- stackPanel.add(verticalPanel_1,"verticalPanel_1");
- VerticalPanel verticalPanel_2 = new VerticalPanel();
- verticalPanel_2.add(new HTML("test01"));
- verticalPanel_2.add(new HTML("test02"));
- verticalPanel_2.add(new HTML("test03"));
- verticalPanel_2.add(new HTML("test04"));
- stackPanel.add(verticalPanel_2,"verticalPanel_2");
- RootPanel.get().add(new HTML("<BR>StackPanel测试."));
- RootPanel.get().add(stackPanel);
- // StackPanel测试结束.
- final DeckPanel deckPanel = new DeckPanel();
- deckPanel.setSize("200px", "200px");
- deckPanel.add(new HTML("<font color='red'>testDeck001</font>"));
- deckPanel.add(new HTML("<font color='blue'>testDeck002</font>"));
- deckPanel.add(new HTML("<font color='yellow'>testDeck003</font>"));
- deckPanel.add(new HTML("<font color='green'>testDeck004</font>"));
- Button buttonDeck = new Button("test Deck()");
- final int[] deckNo = {0};
- buttonDeck.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- //Window.alert(""+deckNo[0]);
- deckPanel.showWidget(deckNo[0]);
- deckNo[0] = (deckNo[0] + 1) % 4;
- }
- });
- RootPanel.get().add(new HTML("<BR>DeckPanel测试."));
- RootPanel.get().add(deckPanel);
- RootPanel.get().add(buttonDeck);
- //DeckPanel测试结束.
- TabPanel tabPanel = new TabPanel();
- tabPanel.add(new HTML("TabPanel001Content"), "001");
- tabPanel.add(new HTML("TabPanel002Content"), "002");
- tabPanel.add(new HTML("TabPanel003Content"), "003");
- tabPanel.selectTab(0);
- RootPanel.get().add(new HTML("<BR>TabPanel测试."));
- RootPanel.get().add(tabPanel);
- //TabPanel测试结束.
- DisclosurePanel disclosurePanel = new DisclosurePanel();
- disclosurePanel.setHeader(new HTML("show"));
- disclosurePanel.setContent(new HTML("ABCDEFGHIGKLMNOPQRSTUVWXYZ"));
- RootPanel.get().add(new HTML("<BR>DisclosurePanel测试."));
- RootPanel.get().add(disclosurePanel);
- //DisclosurePanel测试结束.
- MultiWordSuggestOracle multiWordSuggestOracle = new MultiWordSuggestOracle();
- for(int i = 0; i < 100; i ++){
- //com.google.gwt.user.client.Random静态方法.
- multiWordSuggestOracle.add(Random.nextInt() + "");
- }
- RootPanel.get().add(new HTML("<BR>MultiWordSuggestOracle测试.(测试数字 1 -20)"));
- SuggestBox suggestBox = new SuggestBox(multiWordSuggestOracle);
- RootPanel.get().add(suggestBox);
- //MultiWordSuggestOracle测试结束.
- HorizontalSplitPanel horizontalSplitPanel = new HorizontalSplitPanel();
- //大小正好是一个屏幕的大小.
- horizontalSplitPanel.setLeftWidget(new HTML("Left"));
- horizontalSplitPanel.setRightWidget(new HTML("Right"));
- RootPanel.get().add(new HTML("<BR>HorizontalSplitPanel测试."));
- RootPanel.get().add(horizontalSplitPanel);
- //HorizontalSplitPanel测试结束.
- VerticalSplitPanel verticalSplitPanel = new VerticalSplitPanel();
- //大小正好是一个屏幕的大小.
- verticalSplitPanel.setTopWidget(new HTML("Top"));
- verticalSplitPanel.setBottomWidget(new HTML("Bottom"));
- RootPanel.get().add(new HTML("<BR>VerticalSplitPanel测试."));
- RootPanel.get().add(verticalSplitPanel);
- //VerticalSplitPanel测试结束.
- Button testRPCButton = new Button("testRPC");
- testRPCButton.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- System.out.println("here call function.");
- testRPCAsync.getString(new AsyncCallback<String>() {
- public void onSuccess(String result) {
- System.out.println(result);
- Window.alert(result);
- }
- public void onFailure(Throwable caught) {
- }
- });
- }
- });
- RootPanel.get().add(new HTML("<BR>TestRPCAsync测试."));
- RootPanel.get().add(testRPCButton);
- //TestRPCAsync测试结束.
- }
- private final TestRPCAsync testRPCAsync = GWT.create(TestRPC.class);
- }