Gwt Uibinder小部件

Gwt Uibinder小部件,gwt,uibinder,Gwt,Uibinder,是否可以重用Uibinder上定义的小部件 例如: <g:SuggestBox ui:field='searchBox' /> 我的意思是在两个不同的地方使用相同的建议框。 如果可能的话,我该怎么打电话或做其他什么 谢谢您的帮助。您可以这样做,下面是一个示例: 定义要重用的小部件: ExampleLabel.java: package com.example.client; import import com.google.gwt.user.client.ui.Label;

是否可以重用Uibinder上定义的小部件 例如:

<g:SuggestBox ui:field='searchBox' /> 

我的意思是在两个不同的地方使用相同的建议框。 如果可能的话,我该怎么打电话或做其他什么


谢谢您的帮助。

您可以这样做,下面是一个示例:

定义要重用的小部件:

ExampleLabel.java:

package com.example.client;

import import com.google.gwt.user.client.ui.Label;

public class ExampleLabel extends Composite {
    interface ExampleLabelBinder extends UiBinder<Widget, ExampleLabel>{}
    private static ExampleLabelBinder binder=GWT.create(ExampleLabelBinder.class);
    public ExampleLabel() {
        initWidget(binder.createAndBindUi(this);
    }
}
package com.example.client;
导入com.google.gwt.user.client.ui.Label;
公共类ExampleLabel扩展了复合{
接口示例LabelBinder扩展UiBinder{}
私有静态ExampleLabelBinder binder=GWT.create(ExampleLabelBinder.class);
公共示例标签(){
initWidget(binder.createAndBindUi(this);
}
}
ExampleLabel.ui.xml

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'>
    <g:Label>Just some text</g:Label>
</ui:UiBinder>

只是一些文字
要使用它,请执行以下操作:

UseExampleLabel.ui.xml:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'
    xmlns:myWidgets='urn:import:com.example.client>
<g:FlowPanel>
    <myWidgets:ExampleLabel></myWidgets:ExampleLabel>
    <myWidgets:ExampleLabel></myWidgets:ExampleLabel>
    <myWidgets:ExampleLabel></myWidgets:ExampleLabel>
</g:FlowPanel>
</ui:UiBinder>

您可以这样做,下面是一个示例:

定义要重用的小部件:

ExampleLabel.java:

package com.example.client;

import import com.google.gwt.user.client.ui.Label;

public class ExampleLabel extends Composite {
    interface ExampleLabelBinder extends UiBinder<Widget, ExampleLabel>{}
    private static ExampleLabelBinder binder=GWT.create(ExampleLabelBinder.class);
    public ExampleLabel() {
        initWidget(binder.createAndBindUi(this);
    }
}
package com.example.client;
导入com.google.gwt.user.client.ui.Label;
公共类ExampleLabel扩展了复合{
接口示例LabelBinder扩展UiBinder{}
私有静态ExampleLabelBinder binder=GWT.create(ExampleLabelBinder.class);
公共示例标签(){
initWidget(binder.createAndBindUi(this);
}
}
ExampleLabel.ui.xml

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'>
    <g:Label>Just some text</g:Label>
</ui:UiBinder>

只是一些文字
要使用它,请执行以下操作:

UseExampleLabel.ui.xml:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'
    xmlns:myWidgets='urn:import:com.example.client>
<g:FlowPanel>
    <myWidgets:ExampleLabel></myWidgets:ExampleLabel>
    <myWidgets:ExampleLabel></myWidgets:ExampleLabel>
    <myWidgets:ExampleLabel></myWidgets:ExampleLabel>
</g:FlowPanel>
</ui:UiBinder>

您不能同时在DOM中的两个位置附加同一个小部件实例(因为每个实例只有一个父字段)。您真的想要相同的实例吗?如果是,为什么?(当然可以有多个“同一”SuggestBox实例,或者多个UiBinder小部件实例-这不够吗?)您不能同时在DOM中的两个位置附加同一个小部件实例(因为每个实例只有一个父字段)。您真的想要同一个实例吗?如果是,为什么?(当然可以有多个“相同”SuggestBox实例,或者多个UiBinder小部件实例-这不够吗?)是的,就是这样做的。简言之,使用所需的功能创建自己的SuggestBox实现,然后使用前缀(myWidgets)将其导入UiBinder的XML命名空间然后将其作为任何其他GWT小部件使用。这意味着不可能做到这一点:这就是它的意思;将小部件与其所有侦听器一起使用…您不能两次添加同一个实例,但您可以在ExampleLabel.java中添加处理程序,当您添加小部件时,每个实例都将具有handlers@Issam:在在上面的示例中,您不会使用
,而是在子小部件的标签上设置ui:字段:
,并在那里定义侦听器。非常感谢您的帮助!!!但是对于SuggestBox,在初始化视图{suggest1=new SuggestBox之前,只需为两者定义相同的MultiWordSuggestOracle对象即可(oracle);suggest2=new SuggestBox(oracle);initWidget(uiBinder.createAndBindUi(this));}是的,这就是您的操作方式。简而言之,使用所需的功能创建您自己的SuggestBox实现,然后使用前缀(myWidgets)将其导入uiBinder的XML命名空间然后将其作为任何其他GWT小部件使用。这意味着不可能做到这一点:这就是它的意思;将小部件与其所有侦听器一起使用…您不能两次添加同一个实例,但您可以在ExampleLabel.java中添加处理程序,当您添加小部件时,每个实例都将具有handlers@Issam:在在上面的示例中,您不会使用
,而是在子小部件的标签上设置ui:字段:
,并在那里定义侦听器。非常感谢您的帮助!!!但是对于SuggestBox,在初始化视图{suggest1=new SuggestBox之前,只需为两者定义相同的MultiWordSuggestOracle对象即可(oracle);suggest2=newSuggestBox(oracle);initWidget(uiBinder.createAndBindUi(this));}