使用的是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); }