- 浏览: 371425 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (148)
- java (89)
- flex (7)
- sns (3)
- jquery mobile gwt html5 (1)
- VirtualBox Centos 安装 (2)
- tomcat (1)
- nginx (2)
- centOS (7)
- memcache (2)
- hadoop (3)
- hbase (3)
- install (1)
- cloudera (3)
- tools (0)
- gen code (0)
- Mysql (2)
- KinderEditor (1)
- flash chart (1)
- ntsysv (1)
- hibernate search (2)
- compass (1)
- lucence (2)
- hibernate (1)
- jboss cache (0)
- 二级缓存 (1)
- maven (1)
- debian (1)
- go (1)
- golang (2)
- html5 (1)
最新评论
-
llh1985:
wave牛人~~求联系~~~邮箱llh1985@163.com ...
GWT Wave 开源代码运行跑通分析(1) -
zhengliming123:
[img][img][*][*][/flash][*]|[/i ...
hibernate Search 学习研究 附件是maven工程 -
di1984HIT:
写得很嗯好啊。
CentOS 安装 hadoop hbase 使用 cloudera 版本。(一) -
itfanr:
楼主写的真好 本地godoc
Golang 1.0 文档使用。godoc ,go 命令 学习 ,本地运行 gotour -
phe441:
灰常感谢楼主,爱死你了
URL rewrite 3.2 jar 和 文档 pdf 下载
以前曾写了一个用 GWT 1.7 的一个 全部的组建的测试.
现在花了 2 天时间将这些代码 改成了 UiBinder 的格式.
代码更加 精简.而且更加的漂亮.可以做很复杂的应用.
将布局 组建和业务逻辑 分开.
UiBinderTest01.ui.xml
内容如下:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"> <g:HTMLPanel> PushButton测试. <br></br> <g:PushButton text="PushButton测试." width="150px" height="25px" ui:field="button_0" /> Button测试. <br></br> <g:Button text="Button测试." width="150px" height="25px" ui:field="button1" /> <g:Button text="Button测试." width="150px" height="25px" ui:field="button2" /> CheckBox测试 <br></br> <g:CheckBox text="CheckBox测试" ui:field="checkBox_0" /> <g:CheckBox text="CheckBox测试" ui:field="checkBox_1" /> RadioButton测试 <br></br> <g:RadioButton name="abc" text="CheckBox测试" ui:field="radioButton_0" /> <g:RadioButton name="abc" text="CheckBox测试" ui:field="radioButton_1" /> <g:RadioButton name="abc" text="CheckBox测试" ui:field="radioButton_2" /> <br></br> TextBox测试 <br></br> <g:TextBox text="TextBox测试" ui:field="textBox_0" /> <g:Label ui:field="label_0" /> <br></br> ListBox测试 <br></br> <g:ListBox ui:field="listBox_0" width="150px" /> <g:ListBox ui:field="listBox_1" width="150px" /> <br></br> ListBox测试 <br></br> <g:Frame url="http://www.google.com" ui:field="frame_0" width="300px" height="100px" /> <br></br> RichTextArea测试 <br></br> <g:RichTextArea ui:field="richTextArea_0" width="300px" height="100px" /> <br></br> MenuBar测试 <br></br> <g:MenuBar ui:field="menuBar_0" width="500px" /> <br></br> TabBar测试 <br></br> <g:TabBar ui:field="tabBar_0" width="300px" /> <g:Label text="请点击TabBar." ui:field="tabBarLabel_0" width="300px" /> <br></br> Grid测试 <br></br> <g:Grid borderWidth="1" cellPadding="1" cellSpacing="1" ui:field="grid_0" width="300px" height="200px"> </g:Grid> <br></br> FlexTable测试 <br></br> <g:FlexTable borderWidth="1" cellPadding="1" cellSpacing="1" ui:field="flexTable_0" width="100%" height="100px" /> <br></br> Tree测试 <br></br> <g:Tree ui:field="tree_0" width="300px" height="200px" /> <br></br> Image测试 <br></br> <g:Image url="googleapple.jpg" width="300px" height="100px" /> <br></br> ScrollPanel测试 <br></br> <g:ScrollPanel ui:field="scrollPanel_0" width="300px" height="100px" /> <br></br> PopupPanel测试 <br></br> <g:Button text="PopupPanel测试" ui:field="popupPanelButton" width="150px" height="25px" /> <br></br> DialogBox测试 <br></br> <g:Button text="DialogBox测试" ui:field="dialogBoxButton" width="150px" height="25px" /> <br></br> DockPanel测试 <br></br> <g:DockPanel ui:field="dockPanel_0" width="300px" height="200px"> </g:DockPanel> <br></br> HorizontalPanel测试 <br></br> <g:HorizontalPanel borderWidth="1"> <g:Button text="DialogBox测试" width="150px" height="25px" /> <g:Button text="DialogBox测试" width="150px" height="25px" /> <g:Button text="DialogBox测试" width="150px" height="25px" /> <g:Button text="DialogBox测试" width="150px" height="25px" /> </g:HorizontalPanel> <br></br> VerticalPanel测试 <br></br> <g:VerticalPanel borderWidth="1"> <g:Button text="DialogBox测试" width="150px" height="25px" /> <g:Button text="DialogBox测试" width="150px" height="25px" /> <g:Button text="DialogBox测试" width="150px" height="25px" /> <g:Button text="DialogBox测试" width="150px" height="25px" /> </g:VerticalPanel> <br></br> FlowPanel测试 <br></br> <g:FlowPanel > <g:Button text="DialogBox测试" width="150px" height="25px" /> <g:Button text="DialogBox测试" width="150px" height="25px" /> <g:Button text="DialogBox测试" width="150px" height="25px" /> </g:FlowPanel> <br></br> StackPanel测试 <br></br> <g:StackPanel ui:field="stackPanel_0"> <g:HTML>测试001</g:HTML> <g:HTML>测试002</g:HTML> <g:HTML>测试003</g:HTML> <g:HTML>测试004</g:HTML> </g:StackPanel> <br></br> DeckPanel测试 <br></br> <g:DeckPanel ui:field="deckPanel_0" width="300px" height="200px"> <g:HTML><font color='red'>testDeck001</font></g:HTML> <g:HTML><font color='blue'>testDeck001</font></g:HTML> <g:HTML><font color='yellow'>testDeck001</font></g:HTML> <g:HTML><font color='green'>testDeck001</font></g:HTML> </g:DeckPanel> <g:Button ui:field="deckPanelButton_0" text="DeckPanel测试" width="150px" height="25px" /> <br></br> DisclosurePanel测试 <br></br> [<g:DisclosurePanel> <g:HTML>测试001</g:HTML> </g:DisclosurePanel>] <br></br> TabPanel测试 <br></br> <g:TabPanel ui:field="tabPanel_0" width="300px" height="200px"> </g:TabPanel> <br></br> MultiWordSuggestOracle测试 <br></br> <g:SuggestBox ui:field="suggestBox_0"></g:SuggestBox> <br></br> HorizontalSplitPanel测试 <br></br> <g:HorizontalSplitPanel width="300px" height="200px"> <g:HTML>测试左侧</g:HTML> <g:HTML>测试右侧</g:HTML> </g:HorizontalSplitPanel> <br></br> VerticalSplitPanel测试 <br></br> <g:VerticalSplitPanel width="300px" height="200px"> <g:HTML>测试上面</g:HTML> <g:HTML>测试下面</g:HTML> </g:VerticalSplitPanel> </g:HTMLPanel> </ui:UiBinder>
UiBinderTest01.java
代码:
package com.toeoso.uibinder.test.client; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyUpEvent; import com.google.gwt.event.dom.client.KeyUpHandler; import com.google.gwt.event.logical.shared.CloseEvent; import com.google.gwt.event.logical.shared.OpenEvent; import com.google.gwt.event.logical.shared.SelectionEvent; import com.google.gwt.event.logical.shared.SelectionHandler; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiFactory; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.Random; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.DeckPanel; import com.google.gwt.user.client.ui.DockPanel; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.Frame; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.MenuBar; import com.google.gwt.user.client.ui.MultiWordSuggestOracle; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.PushButton; import com.google.gwt.user.client.ui.RichTextArea; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.StackPanel; import com.google.gwt.user.client.ui.SuggestBox; import com.google.gwt.user.client.ui.TabBar; import com.google.gwt.user.client.ui.TabPanel; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Tree; import com.google.gwt.user.client.ui.TreeItem; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; public class UiBinderTest01 extends Composite { private static UiBinderTest01UiBinder uiBinder = GWT .create(UiBinderTest01UiBinder.class); interface UiBinderTest01UiBinder extends UiBinder<Widget, UiBinderTest01> { } public interface Resources extends ClientBundle { @Source("googleapple.jpg") ImageResource googleApple(); } public UiBinderTest01() { initWidget(uiBinder.createAndBindUi(this)); /* 设置输入框右对齐. */ textBox_0.setTextAlignment(TextBox.ALIGN_RIGHT); /** 这个函数不可以放类体里面. */ textBox_0.addKeyUpHandler(new KeyUpHandler() { public void onKeyUp(KeyUpEvent event) { // 说明.用changeListener的时候.在光标未移出的时候不会改变. String temp = textBox_0.getText(); System.out.println(temp); label_0.setText(temp); } }); listBox_0.setVisibleItemCount(6);// 设置成可选数目是6. listBox_1.setVisibleItemCount(6);// 设置成可选数目是6. listBox_0.addItem("001"); listBox_0.addItem("002"); listBox_0.addItem("003"); listBox_0.addItem("004"); richTextArea_0.setHTML("<font color='red'>abc</font>"); 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())); // 主菜单显示. menuBar_0.addItem("File", bar01); menuBar_0.addItem("Save", bar01); menuBar_0.addItem("Exit", bar01); final String[] tabBarLabelText = { "这个是第1个TabBar.", "这个是第2个TabBar.", "这个是第3个TabBar.", "这个是新添加的第1个TabBar.", "这个是新添加的第2个TabBar." }; tabBar_0.addTab("这个是第1个TabBar."); tabBar_0.addTab("这个是第2个TabBar."); tabBar_0.addTab("这个是第3个TabBar."); // 设置一个数组变量存储值.这里不可以是一个int型.这样会改变不了值. tabBar_0.addSelectionHandler(new SelectionHandler<Integer>() { public void onSelection(SelectionEvent<Integer> event) { System.out.println(tabBar_0.getSelectedTab()); tabBarLabel_0 .setText(tabBarLabelText[tabBar_0.getSelectedTab()]); } }); // 设置网格的数量.3X3的网格. grid_0.setWidget(0, 0, new HTML("hello!")); grid_0.setWidget(1, 1, new HTML("hello!")); grid_0.setWidget(2, 2, new HTML("hello!")); grid_0.setWidget(1, 2, new HTML("hello!")); // 插入测试数据.数据是从(0,0)开始到(2,2)结束. // Grid测试结束. /** 对flexTable进行数据添加. */ for (int i = 0; i < 16; i++) { flexTable_0.setText(i / 4, i % 4, "id:" + i); } 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_0.addItem(treeItem1); tree_0.addItem(treeItem2); tree_0.addItem(treeItem3); // Resources res = GWT.create(Resources.class); // image_0.setResource(res.googleApple()); String strText = ""; for (int i = 0; i < 100; i++) { strText += "ABCDEFGHI"; } // scrollPanel_0.setSize("100px", "100px"); scrollPanel_0.setWidget(new HTML(strText)); scrollPanel_0.setVisible(true); dockPanel_0.add(new HTML("NORTH"), DockPanel.NORTH); dockPanel_0.add(new HTML("SOUTH"), DockPanel.SOUTH); dockPanel_0.add(new HTML("WEST"), DockPanel.WEST); dockPanel_0.add(new HTML("EAST"), DockPanel.EAST); dockPanel_0.add(new HTML("CENTER"), DockPanel.CENTER); dockPanel_0.setBorderWidth(1); stackPanel_0.setStackText(0, "stackPanel 0"); stackPanel_0.setStackText(1, "stackPanel 1"); stackPanel_0.setStackText(2, "stackPanel 2"); stackPanel_0.setStackText(3, "stackPanel 3"); deckPanel_0.showWidget(0); tabPanel_0.add(new HTML("TabPanel001Content"), "001"); tabPanel_0.add(new HTML("TabPanel002Content"), "002"); tabPanel_0.add(new HTML("TabPanel003Content"), "003"); tabPanel_0.selectTab(0); } @UiField PushButton button_0; @UiHandler("button_0") void onClick_0(ClickEvent e) { Window.alert("Push It !"); } @UiField CheckBox checkBox_0; @UiHandler( { "checkBox_0", "checkBox_0" }) void onClick_00(ClickEvent e) { Window.alert("Checked It 1!"); if (checkBox_0.getValue()) { checkBox_1.setValue(false); } else { checkBox_1.setValue(true); } if (checkBox_1.getValue()) { checkBox_0.setValue(false); } else { checkBox_0.setValue(true); } } @UiField CheckBox checkBox_1; /** 测试多重绑定. */ @UiHandler("checkBox_1") void onClick_11(ClickEvent e) { Window.alert("CheckBox It 2!"); } @UiField CheckBox radioButton_0; @UiField CheckBox radioButton_1; @UiField CheckBox radioButton_2; /** 测试一个函数绑两个组件. */ @UiHandler( { "radioButton_0", "radioButton_1", "radioButton_2" }) void onClick_2(ClickEvent e) { Window.alert("CheckBox It 2!"); } @UiField TextBox textBox_0; @UiField Label label_0; @UiField ListBox listBox_0; @UiField ListBox listBox_1; @UiHandler("listBox_0") void listBoxOnClick(ClickEvent event) { int id = listBox_0.getSelectedIndex(); listBox_1.clear();// 清除所有选项. for (int i = 0; i < 4; i++) { listBox_1.addItem(id + "city:\t" + i); } } @UiField Frame frame_0; @UiField RichTextArea richTextArea_0; @UiField MenuBar menuBar_0; @UiField TabBar tabBar_0; @UiField Label tabBarLabel_0; @UiField Grid grid_0; @UiFactory public Grid initGrid() { return new Grid(3, 3); } @UiHandler("grid_0") void onClick_3(ClickEvent e) { // 获得行.// 获得列. String temp = "点击了:[" + grid_0.getCellForEvent(e).getRowIndex() + "," + grid_0.getCellForEvent(e).getCellIndex() + "]"; System.out.println(temp); } @UiField FlexTable flexTable_0; @UiHandler("flexTable_0") void onClick_4(ClickEvent e) { // 获得行.// 获得列. String temp = "点击了:[" + flexTable_0.getCellForEvent(e).getRowIndex() + "," + flexTable_0.getCellForEvent(e).getCellIndex() + "]"; System.out.println(temp); Window.alert(temp); } @UiField Tree tree_0; @UiHandler("tree_0") void treeOnOpen(OpenEvent<TreeItem> event) { System.out.println("tree onOpen:\t" + event.getTarget().getHTML()); } @UiHandler("tree_0") public void treeOnClose(CloseEvent<TreeItem> event) { System.out.println("tree onClose:\t" + event.getTarget().getHTML()); } @UiHandler("tree_0") public void treeOnSelection(SelectionEvent<TreeItem> event) { System.out.println("tree onSelection:\t" + tree_0.getSelectedItem().getHTML()); } @UiField ScrollPanel scrollPanel_0; @UiField Button popupPanelButton; @UiHandler("popupPanelButton") public void popupPanelButtonOnClick(ClickEvent e) { 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(); } @UiField Button dialogBoxButton; @UiHandler("dialogBoxButton") public void dialogBoxButtonOnClick(ClickEvent e) { TestDialogBox_01 testDialogBox_01 = new TestDialogBox_01(); testDialogBox_01.center(); testDialogBox_01.show(); } @UiField DockPanel dockPanel_0; @UiField StackPanel stackPanel_0; @UiField DeckPanel deckPanel_0; @UiField Button deckPanelButton_0; @UiHandler("deckPanelButton_0") public void onClick_5(ClickEvent event) { int showId = (deckPanel_0.getVisibleWidget() +1 ) % 4; deckPanel_0.showWidget(showId); } @UiField TabPanel tabPanel_0; @UiField SuggestBox suggestBox_0; @UiFactory public SuggestBox initSuggestBox() { MultiWordSuggestOracle multiWordSuggestOracle = new MultiWordSuggestOracle(); for (int i = 0; i < 100; i++) { // com.google.gwt.user.client.Random静态方法. multiWordSuggestOracle.add(Random.nextInt() + ""); } return new SuggestBox(multiWordSuggestOracle); } }
界面效果:
工程源代码见附件.
遇到的错误:
19:30:41.703 [ERROR] [uibindertest] In <g:ListBox text='TextBox测试' ui:field='listBox_0'>, class ListBox has no appropriate setText() method <g:ListBox 没有 text 属性. 只要在组件里面有set方法的都可以进行标签的配置. 这个是动态的.配置.如: setUrl有的话,就可以写. <g:Frame url="http://www.google.com" ui:field="frame_0" width="300px" height="100px"/> 20:44:52.640 [ERROR] [uibindertest] Unable to load module entry point class com.toeoso.uibinder.test.client.UiBinderTest (see associated exception for details) java.lang.IndexOutOfBoundsException: Row index: 0, Row size: 0 at com.google.gwt.user.client.ui.Grid.prepareRow(Grid.java:306) at com.google.gwt.user.client.ui.Grid.prepareCell(Grid.java:251) at com.google.gwt.user.client.ui.HTMLTable.setWidget(HTMLTable.java:1056) at com.toeoso.uibinder.test.client.UiBinderTest01.<init>(UiBinderTest01.java:111) at com.toeoso.uibinder.test.client.UiBinderTest.onModuleLoad(UiBinderTest.java:9) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:369) at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:185) at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:380) at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222) at java.lang.Thread.run(Unknown Source) Marks a constructor that may be used as an alternative to a widget's zero args construtor in a UiBinder template. The parameter names of the constructor may be filled as xml element attribute values. 08:13:31.250 [ERROR] [uibindertest] In <g:DockPanel height='25px' text='DialogBox测试' ui:field='dockPanel_0' width='150px'>, class DockPanel has no appropriate setText() method <g:north size='5'> <g:Label>Top</g:Label> </g:north> <g:center> <g:Label>Body</g:Label> </g:center> <g:west size='192'> <g:HTML> <ul> <li>Sidebar</li> <li>Sidebar</li> <li>Sidebar</li> </ul> </g:HTML> </g:west> 08:14:51.328 [ERROR] [uibindertest] Uncaught exception escaped com.google.gwt.core.client.JavaScriptException: (TypeError): boolean is not a function stack: TypeError: boolean is not a function at [object Object].CALL_NON_FUNCTION (native) at unknown source at unknown source at __gwt_jsInvoke (http://localhost:8888/uibindertest/hosted.html?uibindertest:70:34) at eval at eval (native) at unknown source at __gwt_jsInvoke (http://localhost:8888/uibindertest/hosted.html?uibindertest:70:34) at eval at eval (native) at unknown source at eval at eval (native) type: called_non_callable arguments: boolean __gwt_ObjectId: 580 at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:195) at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120) at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507) at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264) at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) at com.google.gwt.core.client.impl.Impl.apply(Impl.java) at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) at com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1713) at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165) at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120) at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507) at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264) at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) at com.google.gwt.core.client.impl.Impl.apply(Impl.java) at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) at com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1713) at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165) at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120) at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507) at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264) at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) at com.google.gwt.core.client.impl.Impl.apply(Impl.java) at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) at com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1668) at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401) at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222) at java.lang.Thread.run(Unknown Source) 10:46:53.421 [ERROR] [uibindertest] In <g:FlowPanel borderWidth='1'>, class FlowPanel has no appropriate setBorderWidth() method 10:50:07.843 [ERROR] [uibindertest] Ambiguous setter requested: StackPanel.stackText 11:05:24.687 [ERROR] [uibindertest] Field 'deckPanel_0' does not have an 'addClickHandler' method associate 11:10:24.203 [ERROR] [uibindertest] Invalid TabPanel child element: HTML
都是些很好理解的错误.
一般都是 ui.xml 文件定义的 属性使用错误.
说明:
绑定是过很好的方法.以前写一个匿名接口实现.
现在只用写一个实现的方法.根据方法里面传入的是什么类型的事件.进行绑定.而不一定是clickEvent事件.
如:
@UiHandler("tree_0") void treeOnOpen(OpenEvent<TreeItem> event) { System.out.println("tree onOpen:\t" + event.getTarget().getHTML()); } @UiHandler("tree_0") public void treeOnClose(CloseEvent<TreeItem> event) { System.out.println("tree onClose:\t" + event.getTarget().getHTML()); } @UiHandler("tree_0") public void treeOnSelection(SelectionEvent<TreeItem> event) { System.out.println("tree onSelection:\t" + tree_0.getSelectedItem().getHTML()); }
对树的事件绑定的时候就是 分别绑定了 3 过事件.OpenEvent,CloseEvent,SelectionEvent
对三个事件进行绑定.至于方法的名称用什么都无所谓.只要是不重复的就行.
而以前要实现这个就需要:
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()); } });
需要定义 3个匿名内部类.去实现. 现在看代码就方便简单多了.
可以所完全不像是做web编程了哈...
对于要进行初始化参数的如Grid
Grid grid_0;
@UiFactory
public Grid initGrid() {
return new Grid(3, 3);
}
使用UiFactory 进行绑定.说明其构造的时候带参数 是 3 行 3 列的表格.
在设置其他组件参数的时候,我就简单的都放在构造函数里面了.
在每次修改 ui.xml 和 .java 文件的时候 都要进校验.
这个时候比较慢..系统像卡死了似的.
你可以少保存几次.想好了在改动.
几乎所有的组件都有一个参数 width="300px" height="200px"
都要设置大小.尤其是button.如果不设置大小.就会成一个小方块.
在使用 ui.xml 的使用 就一个 ui:filed 这个是可以自动生成的 其他的参数都要查询
这个组件下面是否有 setXXX .如果有就有 XXX 属性.首字母小写.
一般 来说 text 是组件的标题.但并不是所以的组件都有标题的.
这个在运行的时候就知道了.如果报错.也是很明显的信息.
用过ff 和chrome 进行调试 都需要下载插件.
chrome 空指针报错 3 次.. ff 没有这样的问题.
而且 chrome 报错后页面会自动跳转到google的页面.
在ui.xml 里面可以混合写 html 和 组件代码.
一般不用重新启动. 除非改了点服务端代码 修改了web.xml
否则 就刷新下就可以了.
一般就是 ui.xml 写错误了.
uiBinder 很强大. 值得深入研究..感觉上以后还会有 flex 的组件.
欢迎大家多提意见. 和我一起研究.
- uiBinderTest_2009_12_17.zip (6.1 MB)
- 下载次数: 525
评论
快速将html原型转化成为gwt组件,也就是美工整出原型来,基本直接copy过来改改就可以用了.另外就是配合layout panel进行应用级别的界面开发
http://zkoss.org/zkdemo/userguide/
发表评论
-
在CSDN上面也开通了博客
2013-02-27 22:41 906在CSDN上面也开通了博客 CSDN 现在发布文章 ... -
resin 服务器学习 配置 单点和 集群
2011-12-08 00:45 2064使用的 resin 4 服务器 ... -
CentOS 安装 Memcache 服务器. java 做客户端.
2011-11-07 18:35 37051,下载安装第三方源: CentOS 6 或 R ... -
CentOS rpm 安装 java 环境 tomcat nginx.
2011-11-03 19:17 7494首先测试更新. yum update ... -
android 源文件 zip包下载.地址
2011-06-20 15:19 1877android 源文件 zip包下载. 网络上面提供了 ... -
读取 jpa 的配置文件.添加自己的属性.
2011-06-15 16:03 1795package com.freewebsys.sns.c ... -
构建富客户端程序 GWT2.3 + Guice3.0 + hibernateJPA 程序代码
2011-05-05 11:44 1596构建富客户端程序 GWT2.3 + Guice3.0 + ... -
Guice 3.0 学习 persist jpa
2011-03-18 17:39 1536guice 3.0 的 persist 实现 使用的是 ... -
自己弄 开源 CMS 内容发布系统 主要表设计。
2011-03-10 11:34 3838--CMS栏目表 CREATE TABLE ... -
坚信 Debian是比Ubuntu更稳定的操作系统
2011-03-07 14:28 2304坚信 Debian是比Ubuntu更稳定的操作系统 自 ... -
eclipse 3.6 sp2 减肥记录
2011-03-04 09:46 1668喜欢 eclipse 但是 发现 eclipse 的功能很多 ... -
记录 2010 01 12 开始 给 自己 2 年 的时间 去弄 一个 gwt sns
2011-01-13 12:57 1313记录 2010 01 12 开始 给 自己 2 ... -
mac os x86 下 intel 无限驱动下载
2011-01-09 10:45 1413是在 googlecode 的项目 http://co ... -
Macos 下面 开源软件 下载
2011-01-06 16:06 1893macos 常用 软件 下载 macos 官方网站下载 ... -
Ubuntu 更新文件 桌面 菜单丢失, 打算 换 mac os
2011-01-04 11:32 2023ubuntu 是 2009 年 安装 ... -
做 一个 sns 的项目 考虑 使用 GWT 做 前台 后台 spring hibernate 如何 ?
2010-12-27 12:48 1466做 一个 sns 的项目 考虑 使用 GWT 做 前台 后台 ... -
Goolge appengine 又可以用了。高兴啊。。
2010-12-15 09:37 739突然想访问下自己的应用。 发现 自己的 appengi ... -
将google app engine 进行 本地化 可写文件 创建线程 去除白名单
2010-12-10 17:36 1912最近 看到 appgeng 被 ... -
设计 一个 oa 当中 的日历显示 跳转 上月 下月
2010-12-01 13:36 1350主要就是利用 java的Calendar 类 ... -
设计实现 一个 基于extjs2.0 做皮肤的 struts2 样式
2010-11-29 14:37 1815想法在 一年前 产生的。 首先使用 extjs2.0 ...
相关推荐
smartgwt-2.0API.CHM 2009年12月18日 ... SmartGWT 2.0发布下载了
SmartGWT 2.0 API 是一款基于Google Web Toolkit (GWT) 2.0的高级组件库,它为开发者提供了丰富的用户界面组件和强大的功能,以构建高性能、交互式的Web应用程序。SmartGWT 2.0 在其前身的基础上进行了多方面的改进...
书中通过一个深入的案例研究来介绍如何构建功能丰富、用户友好的Web 2.0网站,并且涵盖了GWT 1.5版本的相关特性。 #### GWT简介 Google Web Toolkit (GWT) 是一个开源的Java工具包,用于构建高性能的Web客户端应用...
gwt2.0的api文档,chm格式的,方便大家查询。
2. **in.cypal.studio.gwt.core_2.0.0.200903252317.jar**:这个文件可能是插件的核心组件,包含了对GWT核心特性的支持,如编译、调试、代码生成和性能优化等功能。它是cypal Studio功能实现的基础,为开发者提供了...
SmartGWT是一个强大的Java库,专门用于构建富互联网应用程序(RIA)。它基于Google Web Toolkit (GWT) 并扩展了其功能,提供了丰富的组件库和更直观的开发接口。SmartGWT 2.0是该框架的一个早期版本,对初学者来说是...
在GWT 2.0版本中,它为开发者提供了丰富的功能和改进,使得JavaScript编程变得更加简单,同时提高了应用程序的性能和用户体验。 GWT的核心理念是允许开发者使用Java语言来编写前端代码,然后通过编译器将其转换为...
GWT2.0类库详细结构图,是学习GWT的首选资料
《Ext GWT 2.0: Beginner's Guide》是一本专为初学者设计的指南,旨在帮助读者快速掌握Ext GWT 2.0这一强大的Web应用程序开发框架。这本书结合了理论与实践,提供了丰富的示例代码和源码,使得学习过程更加直观和...
《Ext GWT 2.0, Beginner's Guide》是一本专为初学者设计的指南,旨在帮助读者深入了解和掌握Ext GWT 2.0这一强大的Java Web开发框架。Ext GWT,全称EXT Java Widget Toolkit,是Sencha公司开发的一个用于构建富...
《Ext GWT 2.0 初学者指南》是一本专为希望提升网站用户体验的开发者设计的书籍,由Daniel Vaughan撰写。本书旨在帮助读者掌握Ext GWT这一强大的框架,通过详细的指导和实例,使读者能够迅速上手并利用Ext GWT开发出...
标题 "org.jresearch.commons.gwt.utils.shared-1.0.45.zip" 提供的信息表明,这是一个与Java开发相关的开源项目,具体来说是`org.jresearch`组织下的一个 Commons GWT (Google Web Toolkit) 工具集。GWT 是一个用于...
cypal.studio.for.gwt
### Ext GWT 2.0 Beginner's Guide:关键知识点概览 #### 一、书籍简介与背景 《Ext GWT 2.0 Beginner's Guide》是一本专为初学者设计的指南,旨在帮助读者深入了解Ext GWT框架的核心概念及其在Web开发中的应用。...
cypal.studio.for.gwt-1.0
3. in.cypal.studio.gwt.samples_1.0.0.200808282244.jar:这个文件很可能包含了示例代码或者模板,供开发者学习和参考,以了解如何使用Cypal Studio和GWT进行实际的开发工作。 结合这些信息,我们可以推测"Cypal ...
2. Hello GWT 3. 模块 4. JSNI 5. 在GWT中使用XML 6. GWT控件详解 7. 使用GWT控件 8. GWT-RPC 9. Ext GWT 10. (实战)俄罗斯方块游戏 11. (实战)费用申请审批流程 12. GWT与Flex整合 13. 图片缓存 CSS Sprite 14. ...
【标题】"org.liveSense.sample.gwt.notes-1.0.5.zip" 提供的是一个名为 "org.liveSense.sample.gwt.notes" 的开源项目,版本号为 1.0.5。这个项目是基于 Google Web Toolkit (GWT) 开发的一个示例应用,用于演示 ...
《GWT-EXT2.0最佳实践教程》源代码打包下载资源主要涵盖了Google Web Toolkit (GWT) 和EXT-JS 2.0的结合使用,提供了丰富的实践案例和示例代码,旨在帮助开发者深入理解和应用这两项技术。GWT是一款强大的JavaScript...