GWT 研究. 1.7 版本.

简介: 使用的是google的插件. 最新的eclipse 3.5 gwt 版本是 1.7. 花了一天时间写点demo 看看这些组件都怎么使用的..   1 GWT1.7版本下面是不推荐使用Listener了.而改用Handler了. 似乎这样每一个button都可以添加子节点handler了. 然后在上面编写代码.   2 在内部类里面要调用父类的属性的时候.要添加fianl字

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


 

 

目录
相关文章
|
3月前
|
人工智能 测试技术 Go
如何使用 Google 的 Gemini
Google Gemini是谷歌发布的人工智能大模型,能够在从数据中心到移动设备等不同平台上运行。本文将介绍Gemini以及如何使用Gemini。
303 0
|
8月前
|
数据可视化 JavaScript 前端开发
Google开源了可视化编程框架Visual Blocks for ML
Visual Blocks for ML是一个由Google开发的开源可视化编程框架。它使你能够在易于使用的无代码图形编辑器中创建ML管道。
165 0
|
Java API Maven
Guava:google公司开发的一款Java类库扩展工具包
Guava:google公司开发的一款Java类库扩展工具包
334 0
|
网络安全 图形学 UED
Rhino ceros 7.25:3D设计软件的全新进化!+Rhino ceros 全版本安装包
Rhino ceros 7.25:3D设计软件的全新进化!+Rhino ceros 全版本安装包
|
开发框架 Java .NET
Mono 现状与未来: 从 Xamarin 到 WebAssembly、Blazor 及.NET 5
  本文要点:   Mono 项目始于 2001 年,是首个面向.NET 应用程序的多平台、开源框架的项目。Xamarin 和 Blazor 分别代表了微软在移动和 Web 应用程序方面的努力,它们都是基于 Mono 并由 Mono 提供支持的。.NET 5 为用户提供了两种运行时选项:高性能的 CoreCLR(用于服务器和桌面应用程序)和轻量级的 Mono(用于移动设备和 WebAssembly)。尽管 Mono 已经是.NET 的一部分了,但仍有一些开发工作要致力于改善 Mono 的运行时性能和垃圾回收器。现在.NET Core 可以与 Mono 并行安装了,因此可以一起演进语言和运行时
653 0
|
JavaScript 前端开发 IDE
JetBrains 最新调查报告发布:JavaScript 最流行,Python 超越 Java
JetBrains 最新调查报告发布:JavaScript 最流行,Python 超越 Java
243 0
JetBrains 最新调查报告发布:JavaScript 最流行,Python 超越 Java
|
API Windows
微软新一代输入法框架 TSF - Text Service Framework 小小的研究
原文:微软新一代输入法框架 TSF - Text Service Framework 小小的研究 虽说是转载的,但是其中,有很多我自己的评论,我会用红色的字标出来,参考的博文有: TSF架构:http://blog.
3817 0
|
机器学习/深度学习 分布式计算 IDE
LinkedIn开源Dagli,发布Java机器学习函数库
LinkedIn 最近开源了 Dagli,一个面向 Java (和其他 JVM 语言)的机器学习库,让编写代码减少bug、可读、可修改、可维护和可部署的模型管道变得更加容易,而不会导致技术难题。
104 0
LinkedIn开源Dagli,发布Java机器学习函数库