List GWT单元列表Ubinder
由于我的开发需求,我需要创建一个GWT单元列表,其中包含UIBinder。谁能给我举个例子说明怎么做 我正在查看gwt的展示,但我发现任何案例都不相同List GWT单元列表Ubinder,list,gwt,cell,uibinder,List,Gwt,Cell,Uibinder,由于我的开发需求,我需要创建一个GWT单元列表,其中包含UIBinder。谁能给我举个例子说明怎么做 我正在查看gwt的展示,但我发现任何案例都不相同 太多了 您应该查看一下官方文档: 当您使用UiRenderer时,您使用的是UiBinder,您需要将UiBinder看作是从ui.xml模板生成DOM的东西,如果您使用UiRenderer则直接将DOM结构描述为html,而不是使用“GWT普通的东西(如)” 所以有相关的概念 关于你的问题: 1) 是的,您可以这样做,但是使用html和css。
太多了 您应该查看一下官方文档: 当您使用
UiRenderer
时,您使用的是UiBinder
,您需要将UiBinder
看作是从ui.xml
模板生成DOM的东西,如果您使用UiRenderer
则直接将DOM结构描述为html,而不是使用“GWT普通的东西(如
)”
所以有相关的概念
关于你的问题:
1) 是的,您可以这样做,但是使用html和css。附加处理程序的方法非常简单,我将向您展示一个示例:
public class YourTypeCell extends AbstractCell<T> {
static interface Renderer extends UiRenderer {
void render(SafeHtmlBuilder sb, String id, String name, String img);
void onBrowserEvent(CommentCell o, NativeEvent e, Element p, T value);
}
private final Renderer renderer;
public YourTypeCell(...) {
super(BrowserEvents.CLICK, BrowserEvents.MOUSEOVER);
....
renderer = GWT.create(Renderer.class);
}
@Override
public void render(Context context, final T item, final SafeHtmlBuilder sb) {
String id = ...;
String img = ...;
String name = ...;
renderer.render(sb, id, name, img);
}
@Override
public void onBrowserEvent(Context context, Element parent,
T value, NativeEvent event, ValueUpdater<T> valueUpdater) {
renderer.onBrowserEvent(this, event, parent, value);
}
@UiHandler({"field1"})
void onMouseOver(MouseOverEvent event, Element parent, T value) {
...
}
@UiHandler({"field2"})
void onReplyComment(ClickEvent event, Element parent, T value) {
...
}
}
请看一下。谢谢你问Braj。我读过这篇文章,但我有一些疑问。1) 它使用UiRenderer而不是UiBinder。我需要一个带有图片、字符串和三个带有onClick事件处理程序的按钮的UiBinder。我能用它来实现吗。我在网上读了很多书,但我不能得到一个清晰的想法。2) 在使用示例中,在类CellListExample中,它显示了创建CellList的代码,但我有一个疑问。如何使用此示例?我的意思是,如何用UiBinder创建一个列表,并将其显示在单元格列表中?谢谢谢谢阿帕尼佐的回答,这对我来说太有用了,我已经实现了我想要的。使用UIBinder提供了一种强大的方式来创建漂亮的用户界面。嗨!我想用uibinder做点别的事。我把它贴在这里是因为它与前面的请求相关,它可能对其他人有用。我想处理点击事件(已解决),但现在我需要,当用户在字段2中点击时,更改“”的文本。我想我得再做一次类似的事情。你知道我怎么做吗?谢谢你的建议。我想用GQuery。我需要文本,但根据我的记忆,在单元格@UiField DivElement field2;中创建变量,然后,在字段2的ClickHandler中,如果您使用GQuery.$(field2.html(“pepito”);,它应该会起作用。如果没有,请告诉我。这正是我正在应用的方法,但我想知道是否有其他自己的UiBinder方法可以做到这一点。使用GQuery,它可以正常工作。谢谢
<!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' >
<ui:style>
.clear{
clear:both;
}
.cssOne {
....
}
.cssTwo {
....
}
</ui:style>
<ui:with field="id" type="java.lang.String"/>
<ui:with field="name" type="java.lang.String"/>
<ui:with field="img" type="java.lang.String"/>
<div ui:field='field1' class="{style.cssOne}">
<div ui:field='field2' class="{style.cssTwo}">
<ui:text from='{name}'/>
</div>
<p><ui:safehtml from='{img}'/></p>
</div>
</ui:UiBinder>
CellList<T> cellList = new CellList<T>(new YourTypeCell(...));