我有一个<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>
答案 0 :(得分:2)
GWT Button小部件是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
方法。请参阅te Button
方法的wrap
小部件实现,它是相同的,当然期望创建小部件本身。
答案 1 :(得分:1)
您不能只使用html按钮并尝试向其添加点击处理程序。您需要使用gwt代码创建按钮。尝试:
<div id="test"></div>
然后:
Button button = new Button("OK");
RootPanel.get("test").add(button);
button.addClickHandler(new ClickHandler() {...});