Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GWT中现有元素上的ClickHandler_Gwt - Fatal编程技术网

GWT中现有元素上的ClickHandler

GWT中现有元素上的ClickHandler,gwt,Gwt,我有一个HTML文档。在该文档中,有一个ID为的元素(如button、div、a)。我知道我可以使用: Document.get().getElementById("id"); 在HTML文件中查找所需的元素。如何向其添加单击处理程序?ClickHandler似乎仅在Button类上可用 谢谢如果您试图将点击处理程序添加到中,您可以使用 对于(Anchors只有ClickListeners,而不是ClickHandlers…) 对于,您可以使用(标签s只是s)。建议: 尝试学习如何使用UiBi

我有一个HTML文档。在该文档中,有一个ID为的元素(如button、div、a)。我知道我可以使用:

Document.get().getElementById("id");
在HTML文件中查找所需的元素。如何向其添加单击处理程序?ClickHandler似乎仅在Button类上可用


谢谢

如果您试图将
点击处理程序
添加到
中,您可以使用

对于
Anchor
s只有
ClickListener
s,而不是
ClickHandler
s…)

对于
,您可以使用(
标签
s只是
s)。

建议: 尝试学习如何使用UiBinder(在GWT2.0中添加)

在您的情况下,您本可以:

yourView.ui.xml

...
<g:Button ui:field="btnName" />
...
。。。
...
yourView.java

public class yourView extends Composite {
    interface MyUiBinder extends UiBinder<LayoutPanel, yourView> {}
    private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);

    @UiField Button btnName;

    public yourView() {
        initWidget(uiBinder.createAndBindUi(this));
    }

    @UiHandler("btnName")
    void handleClick(ClickEvent e) {
        //Do whatever
    }
}
public类yourView扩展了复合{
接口MyUiBinder扩展了UiBinder{}
私有静态MyUiBinder=GWT.create(MyUiBinder.class);
@UiField按钮btnName;
公共视图(){
initWidget(uiBinder.createAndBindUi(this));
}
@UiHandler(“btnName”)
无效手柄点击(点击事件e){
//做任何事
}
}

使用“@UiHandler”,您可以添加小部件可以支持的任何处理程序(实现有****处理程序)。向该结构添加其他元素既简单又快速,您可以向其中添加任何类型的处理程序@UiField创建一个变量,该变量包含可在类中任何位置操作的元素实例。

另一个建议-使用GQuery。它可以轻松地将简单的事件侦听器附加到DOM,而无需创建GWT小部件经常执行的额外元素:

$("id").click(new Function() {
  public boolean f(Event e) {
    Window.alert("This is GWT code without widget baggage!");
    return true;
  }
});
请参见此处了解更多信息:


遗憾的是,没有更多基于渐进增强的GWT代码。我的意思是,CSS/HTML在设计/标记方面做得很好——这正是我想要取代的Javascript

只需设置事件侦听器即可

Event.sinkEvents(e, Event.ONCLICK);
Event.setEventListener(e, new EventListener() {
     @Override
     public void onBrowserEvent(Event event) {
          Window.alert("Clicked!");
     }
});

这里列出了两种选择:这对我来说似乎相当昂贵。下面的解决方案更有效。谢谢你的帮助!完美的你帮了大忙。我一直试着做一些新的按钮(元素)。谢谢此外,您还可以使用HTML.wrap()处理与Jason提到的按钮/锚定/标签分组不匹配的任何内容。如果UI内置于GWT中,这一点很有效,但他的问题是如何将单击处理程序(以及其他GWT功能)添加到页面上现有的HTML中。但是,如果他是在GWT中构建整个页面,那么这肯定是一条路要走。