1

我通过像这样扩展它,为标准 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...
    }
});

任何想法为什么?

4

2 回答 2

0

要么从中删除无参数构造函数,FeatureListBox要么在其中调用super(),否则超类中的初始化将不会发生,这可能会导致您所看到的。

于 2012-09-26T22:12:05.807 回答
0

问题在于我使用自定义列表框的方式。在我的应用程序中,我使用其小部件类的静态wrap()方法将 GWT 小部件包装在页面上现有的 DOM 元素周围,其中小部件被标记为已连接,从而使它们触发事件。我最初并没有对我的自定义列表框类这样做,所以我最终实现了一个类似于常规 ListBox 小部件的静态wrap()方法并在我的代码中使用它。现在一切都像魅力一样。

于 2012-09-27T14:36:28.023 回答