考虑以下小部件。我将其中两个添加到我的页面中。第一个获得名称“widget1”,第二个获得名称“widget2”。它应该给出自己的名字,但从 javascript 调用。(这个例子没有任何意义,但只是一个简单的例子来弄清楚它是如何完成的。)
public class MyComponent extends Composite{
String name;
public MyComponent(String name) {
this.name =name;
Button b = new Button(name);
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
myonclick();
}
});
initWidget(b);
declareMethod(this);
}
public native void declareMethod(MyComponent myWidget) /*-{
$wnd.myWidget = myWidget;
}-*/;
public native void myonclick() /*-{
$wnd.myWidget.@de.jsni.test.client.MyComponent::doSomething()();
}-*/;
public void doSomething() {
Window.alert(name);
}
}
我现在的问题是:两个按钮都会提示消息“widget2”。那是因为我覆盖了“declareMethod”中的“myWidget”变量。如何归档调用正确对象的 doSomething() 方法?我可以在这里使用某种命名空间方法吗?