Кнопка GWT EventListener не сработала - PullRequest
1 голос
/ 23 марта 2010

У меня есть <div id="test"><input type="button" value="OK" /></div> HTML-тег.

Я использовал:

((HasClickHandlers)RootPanel.get("test").getWidget(0)).addClickHandler(new ClickHandler() {
  @Override
  public void onClick(ClickEvent event) {
    Window.alert('sss');
  }
}

Я выполнил, но никаких действий.

Обновление:

package com.example.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.*;
import com.google.gwt.user.client.*;
import com.google.gwt.user.client.ui.RootPanel;

public class ExampleWebApp implements EntryPoint {
  public void onModuleLoad() { 
    ((HasClickHandlers) RootPanel.get("test").getWidget(0)).addClickHandler(new ClickHandler() { 
      @Override
      public void onClick(ClickEvent event) {
        Window.alert("i got it");
      }
    });
   }
 }

HTML:

<table>
  <tr>
    <div id="test">
      <input type=button onClick="" value='click here'>
    </div>
  </tr>
</table>

Ответы [ 2 ]

2 голосов
/ 23 марта 2010

Виджет Кнопка GWT является тегом button, а не тегом input. Это означает, что вы не можете использовать виджет GWT Button в этом случае. Чтобы это работало, вам нужно создать свой собственный виджет, который может быть основан на виджете ButtonBase, но должен быть инициализирован объектом InputElement вместо ButtonElement.

Следующим шагом для получения тега из html является добавление чего-то похожего на статический метод wrap, присутствующий в большинстве виджетов. Вот как это будет использоваться в вашем примере, когда input был бы тегом button:

Button.wrap(RootPanel.get("test").getWidget(0).getElement()).addClickHandler(
    new ClickHandler() {
       @Override public void onClick(ClickEvent event) { 
          Window.alert('sss');
       }
    });

В вашем случае вы можете добавить метод wrap в свой пользовательский виджет ввода. См. Реализацию виджета Button метода te wrap, это то же самое, ожидайте, конечно, для создания самого виджета.

1 голос
/ 23 марта 2010

Вы не можете просто взять кнопку html и попытаться добавить обработчики кликов к ней. Вам нужно создать кнопку, используя код gwt. Попробуйте:

<div id="test"></div>

А потом:

Button button = new Button("OK");
RootPanel.get("test").add(button);
button.addClickHandler(new ClickHandler() {...});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...