我通过扩展标准GWT ListBox添加了一些额外的功能:
public class FeatureListBox extends ListBox
{
public FeatureListBox()
{
}
public FeatureListBox(boolean isMultipleSelect)
{
super(isMultipleSelect);
}
public FeatureListBox(Element element)
{
super(element);
}
}
这里没什么好看的。但是,Change事件现在没有触发,或者至少没有调用处理程序(每个附件)。
FeatureListBox listBox = new FeatureListBox();
listBox.addChangeHandler(new ChangeHandler()
{
public void onChange(ChangeEvent event)
{
// Do something here...
}
});
任何想法为什么?
答案 0 :(得分:0)
从FeatureListBox
中删除无参数构造函数或在其中调用super()
,否则不会发生超类中的初始化,这可能会导致您看到的内容。
答案 1 :(得分:0)
问题在于我使用自定义列表框的方式。在我的应用程序中,我使用窗口小部件类的静态 wrap()方法将GWT Widgets包装在页面上的现有DOM元素中,其中窗口小部件被标记为附加,从而使它们成为触发事件。我最初没有使用我的自定义列表框类,所以我最终实现了一个类似于常规ListBox小部件的静态 wrap()方法,并在我的代码中使用它。现在一切都像魅力一样。