我创建了一个扩展 SimplePanel 并在 onLoad() 方法中执行一些 JSNI 的小部件:
public class AceEditor extends SimplePanel implements HasText {
private JavaScriptObject editor;
@Override
protected void onLoad() {
super.onLoad();
editor = createEditor(getElement());
}
private static native JavaScriptObject createEditor(Element element) /*-{
return $wnd.ace.edit(element);
}-*/;
@Override
public native void setText(String value) /*-{
this.@org.obiba.opal.web.gwt.ace.client.AceEditor::editor.setValue(value);
}-*/;
@Override
public final native String getText() /*-{
return this.@org.obiba.opal.web.gwt.ace.client.AceEditor::editor.getValue();
}-*/;
}
问题是当我第一次调用setText
时,小部件尚未附加(onLoad
尚未调用)。
我将此小部件与UiBinder
.
我可以使用addAttachHandler
并检查是否附加了小部件,但它似乎不是正确的方法......
知道为什么没有尽快附加小部件吗?