Gwt 吕震中本:我如何从根面板中获得对按钮的引用?
我正在使用GWT2.4。在我的onModuleLoad方法中,给定一个字符串id,如何从RootPanel对象获取对页面上现有按钮的引用?我在试这个Gwt 吕震中本:我如何从根面板中获得对按钮的引用?,gwt,Gwt,我正在使用GWT2.4。在我的onModuleLoad方法中,给定一个字符串id,如何从RootPanel对象获取对页面上现有按钮的引用?我在试这个 public void onModuleLoad() { ... final Button submitButton = (Button) RootPanel.get("submit"); 但是得到编译错误“不能从根面板转换到按钮” 编辑: 我认为使用迭代器可以治愈痛苦,但没有骰子。下面是加载的默认HTML(请注意带有id=“su
public void onModuleLoad() {
...
final Button submitButton = (Button) RootPanel.get("submit");
但是得到编译错误“不能从根面板转换到按钮”
编辑:
我认为使用迭代器可以治愈痛苦,但没有骰子。下面是加载的默认HTML(请注意带有id=“submit”的按钮)
文件名:
但是onModuleLoad中的这段代码会导致NullPointerException(因为找不到submitButton id)
模块加载()上的公共void{
最终按钮submitButton=(按钮)getWidgetById(“提交”);
addStyleName(“submitButton”);
...
私有小部件getWidgetById(最终字符串id){
窗口小部件eltToFind=null;
最终迭代器iter=RootPanel.get().Iterator();
while(iter.hasNext()){
最终小部件Widget=iter.next();
最终元素elt=widget.getElement();
如果(elt.getId()!=null&&elt.getId().equals(id)){
eltToFind=widget;
打破
}//如果
}//而
返回eltToFind;
}
谢谢,-Daveget()方法返回与浏览器元素相关联的根面板,而不是具有该名称的小部件。根面板是ComplexPanel的子类,因此我认为最好的方法是使用ComplexPanel中的方法迭代小部件,从而找到您想要的小部件。您可以使用
Document.get()获取输入元素.getElementById(“submit”).cast()
,但您将无法从中获取按钮
小部件
如果将代码改为
而不是
(技术上不需要type=button部分,但如果不需要,某些浏览器会将其视为type=submit),则可以使用button.wrap()
:
Button-Button=Button.wrap(Document.get().getElementById(“提交”);
一些GWT小部件具有静态方法wrap(),该方法允许将DOM元素转换为小部件实例
Button submit=Button.wrap(DOM.getElementById(“submit”);wrap创建一个层,并将删除之前在该按钮上编写的所有功能 我使用下面的代码来解决相同的问题
Document.get().getElementById("buttonId").getStyle().setDisplay(false)
您能演示一下如何做到这一点吗?我已经尝试了迭代器方法(在我的编辑中),但它找不到id肯定在页面上的元素。
public void onModuleLoad() {
final Button submitButton = (Button) getWidgetById("submit");
submitButton.addStyleName("submitButton");
...
private Widget getWidgetById(final String id) {
Widget eltToFind = null;
final Iterator<Widget> iter = RootPanel.get().iterator();
while (iter.hasNext()) {
final Widget widget = iter.next();
final Element elt = widget.getElement();
if (elt.getId() != null && elt.getId().equals(id)) {
eltToFind = widget;
break;
} // if
} // while
return eltToFind;
}
Document.get().getElementById("buttonId").getStyle().setDisplay(false)