GWT中现有元素的ClickHandler

时间:2010-05-19 21:35:44

标签: gwt

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

Document.get().getElementById("id");

在HTML文件中查找所需元素。如何为其添加Click处理程序? ClickHandlers似乎只在Button类上可用。

由于

4 个答案:

答案 0 :(得分:17)

如果您尝试将ClickHandler添加到<button>,则可以使用Button.wrap()执行此操作。

对于<a>你可以使用Anchor.wrap()Anchor只有ClickListener s,而不是ClickHandler s ...还有

对于<div>,您可以使用Label.wrap()Label只是<div> s。)

答案 1 :(得分:4)

建议: 尝试学习如何使用UiBinder(在GWT 2.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
    }
}

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

答案 2 :(得分:1)

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

$("id").click(new Function() {
  public boolean f(Event e) {
    Window.alert("This is GWT code without widget baggage!");
    return true;
  }
});

请点击此处了解详情:http://code.google.com/p/gwtquery/wiki/GettingStarted#Add_an_event_handler

遗憾的是,没有更多基于GWT代码的渐进增强功能。恕我直言,CSS / HTML在设计/标记方面做得很好 - 它只是我想要替换的Javascript。

答案 3 :(得分:0)

只需设置一个事件监听器即可。

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