我正试图通过其构造函数将我的应用程序的EventBus传递给在UiBinder中声明的小部件.我正在使用@UiConstructor注释来标记接受EventBus的构造函数,但我不知道如何从我的ui.xml代码中实际引用该对象.
也就是说,我需要类似的东西
WidgetThatNeedsAnEventBus.java
public class WidgetThatNeedsAnEventBus extends Composite
{
private EventBus eventBus;
@UiConstructor
public WidgetThatNeedsAnEventBus(EventBus eventBus)
{
this.eventBus = eventBus;
}
}
Run Code Online (Sandbox Code Playgroud)
TheUiBinderThatWillDeclareAWTNAEB.ui.xml
<g:HTMLPanel>
<c:WidgetThatNeedsAnEventBus eventBus=_I_need_some_way_to_specify_my_apps_event_bus_ />
</g:HTMLPanel>
Run Code Online (Sandbox Code Playgroud)
我将静态值传递给WidgetThatNeedsAnEventBus没有问题,我可以使用工厂方法创建一个新的EventBus对象.但我需要的是通过我的应用程序已经存在的EventBus.
有没有办法在UiBinder中引用已存在的对象?
你能告诉我为什么css类定义在以下例子中不起作用?
我正在使用GWT 2.4 + Chrome 17.
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:style>
div.test {
color: red;
}
</ui:style>
<g:HTML>
<div class="test">I should be red but I'm not</div>
</g:HTML>
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud) 我是GWT的新手,并尝试创建一个试图继承复合小部件的页面,但复合小部件的值是动态的.
我的主页有点像:
.....
.....
<g:Button>Open composite widget</g:button>
.....
.....
Run Code Online (Sandbox Code Playgroud)
这是打开另一个弹出面板,如下所示:
.....
<table>
<tr><td>Top: <myCompany:userMeasurementUnit/> </td></tr>
<tr><td>Bottom: <myCompany:userMeasurementUnit/> </td></tr>
<tr><td>Left: <myCompany:userMeasurementUnit/> </td></tr>
<tr><td>Right: <myCompany:userMeasurementUnit/> </td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)
以上应该告诉我们
top (cm)
bottom (cm)
left (cm)
right (cm)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将值从主页传递到自定义小部件,即usermeasurementunit
<myCompany:userMeasurementUnit/>
Run Code Online (Sandbox Code Playgroud)
我的usermeasurementunit是这样的:
UiBinder的:
<htmlpanel tag="span" ui:field="unit"/>
Run Code Online (Sandbox Code Playgroud)
而composit小部件是
usermeasurementunit extends Composite {
public usermeasurementunit(){
initwidget...
}
public onload() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想在点击按钮时传递任何测量单位厘米或英寸或米.我尝试使用事件总线,但它没有帮助,因为当我点击按钮popuppanel不在屏幕上,它没有捕捉事件.如果你们中的任何一个人可以帮助我,我会非常感激,因为我真的在努力解决这个问题.
亲切的问候
我正在尝试将UI绑定器小部件包含到另一个小部件中:我正在使用UI绑定器构建一个表单,并希望包含一个使用UI绑定器完成的精美按钮.有谁知道如何做到这一点?
谢谢!
在我的ui.xml中,我的风格如下
<ui:style src="../teststyle.css" />
Run Code Online (Sandbox Code Playgroud)
如果我想以编程方式使用java文件而不是ui.xml中的样式,在我的小部件中如何调用.setStyleName(..)作为css被混淆
我有一个ClientBundle,其中包含整个应用程序所需的css资源 - 默认背景颜色,常见布局模式等.
GWT 规定的设计目标是"对于多个ClientBundle资源函数引用相同内容不会受到惩罚".我是否必须做任何事情以避免处罚并帮助ClientBundle实现这一目标?
一种天真的方法就是添加
<ui:with field="appWideResources"
type='com.activegrade.client.resources.appwide.AppWideResources' />
Run Code Online (Sandbox Code Playgroud)
在每个UiBinder文件的顶部.但是,在我的22亿UiBinder文件中,这将创建22亿个AppWideResources实例,每个实例都有不同的冗余混淆等等?
试图扩展AbsolutePanel,我的UiBinder将不允许<g:at>通常可以用于直接AbsolutePanel 的元素.如何让我的AbsolutePanel子类能够使用该<g:at>元素?更一般地说,我可以为我自己的自定义小部件制作自定义UiBinder关键字,如"at","west","layer"等.
有人可以发布一个在Java代码和UiBinder XML之间共享(最好是静态最终)字符串或数字常量的最短方式的示例,我可以在属性中使用常量:
<g:TextArea width="...px"/>
或者是一个值:
<g:Label>...</g:Label>
我似乎无法找到这样的例子,只有文件中的文字,我不想要.
我对gwt非常陌生,我需要使用uibinder将现有应用程序更改为gwtbootstrap用于模板.
我用Google搜索了基本的安装说明.下载后文件在哪里.来自https://github.com/gwtbootstrap3/gwtbootstrap3/tree/master/gwtbootstrap3