GWT 研究. 1.7 版本.

来源:互联网 发布:摄像头链接电脑网络 编辑:程序博客网 时间:2024/05/18 14:27

使用的是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 stubSystem.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 stubSystem.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 stubString temp = textBox.getText();System.out.println(temp);// System.out.println(event.getNativeKeyCode());label_1.setText(temp);}});// KeyboardListenerAdapterRootPanel.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 stubSystem.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 stubSystem.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);}