GWT中的Javascript对象函数
我在gwt的uibinder上使用DivElement。我需要在java类上创建div元素的onclick。Element类提供了Element.createFunction(),但我不明白如何使用它GWT中的Javascript对象函数,javascript,java,function,gwt,Javascript,Java,Function,Gwt,我在gwt的uibinder上使用DivElement。我需要在java类上创建div元素的onclick。Element类提供了Element.createFunction(),但我不明白如何使用它 **abc.ui.xml** <g:HTMLPanel ui:field="html"> <div class="lfloat" ui:field="label"></div> </g:HTMLPanel> abc.java @UiFi
**abc.ui.xml**
<g:HTMLPanel ui:field="html">
<div class="lfloat" ui:field="label"></div>
</g:HTMLPanel>
abc.java
@UiField DivElement label;
public abc()
{
// TODO Auto-generated constructor stub
initWidget(uiBinder.createAndBindUi(this));
label.setClassName("hyperlink_labels");
//JavaScriptObject js = label.createFunction();
//how to create function for this DivElement
}
**abc.ui.xml**
java
@UiField元素标签;
公共广播
{
//TODO自动生成的构造函数存根
initWidget(uiBinder.createAndBindUi(this));
label.setClassName(“超链接标签”);
//JavaScriptObject js=label.createFunction();
//如何为此元素创建函数
}
JavaScriptObject.createFunction()
几乎没有用处,因为它将返回一个不执行任何操作的函数。如果需要本机JS函数,则需要使用JSNI
但在您的情况下,您更应该利用事件委派:在HTMLPanel
上设置ClickHandler
,并检查事件目标是标签还是它的子项:
addClickHandler(新的ClickHandler(){
@凌驾
公共作废一次点击(点击事件){
EventTarget=event.getNativeEvent().getEventTarget();
if(Node.is(target)&&label.isOrHasChild(Node.as(target))){
//已单击标签
}
}
}
我认为最简单的解决方法是使用
它使用div
元素,因此它将按照您想要的方式呈现。作为一个小部件,它具有addClickHandler
方法
xml:
我将更改ui.xml
<g:SimplePanel ui:field="html">
<g:SimplePanel class="lfloat" ui:field="label" />
<!-- I am not 100% sure, if the class-attribute is named style -->
</g:SimplePanel>
SimplePanel或FlowPanel是div+,您可以使用@UiHandler注释。
@UiField
Label label;
label.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
...
}
});
<g:SimplePanel ui:field="html">
<g:SimplePanel class="lfloat" ui:field="label" />
<!-- I am not 100% sure, if the class-attribute is named style -->
</g:SimplePanel>
@UiHandler("label") public void onClick(ClickEvent e){...}