GWT:制作自定义ListBox的最佳方法是什么

时间:2013-08-11 09:18:09

标签: java gwt

我有一个与自定义GWT小部件相关的问题。

我将创建一个自定义ListBox来执行语言选择。我试图通过扩展GWT的ListBox类来实现这一点并且它可以工作。

public class LanguageListBox extends ListBox {
   ....
}

但是,我认为从Java的角度来看,我们可能更喜欢复合而不是继承。我确实阅读了一些建议扩展Composite而不是widget本身的文章。

public class LanguageListBox extends Widget {
    private final ListBox listBox;

    LanguageListBox() {
        listBox = new ListBox();
    }

    ......
}

此课程不起作用。我相信我没有创建桥接方法,将调用语言列表的某些方法转发到包装的ListBox。但是,我已经检查过ListBox有很多方法,为了使这个设计有效,我需要转发哪种方法?

总而言之,我不确定这种情况下最好的设计是什么。

  • 我应该让我的LanguageListBox直接扩展ListBox,还是将Compisite和forward方法调用扩展到包装的ListBox?
  • 还有其他更好的设计吗?

1 个答案:

答案 0 :(得分:2)

尽管构图通常优先于遗传。在这种情况下,我肯定会继承,因为您基本上希望在窗口小部件中添加新功能或自定义现有功能,同时保留几乎所有ListBox必须提供的功能。我认为通常在处理GUI组件时,通常是继承,并且在大多数情况下是最佳解决方案。 但是,您应该确保,如果不继承它,就无法与普通ListBox达到相同的效果。

正如您所提到的,由于ListBoxLanguageListBox之间绝对没有桥梁,因此课程无效。它没有多大意义。

语言选择。我认为除非您想要一些非常特殊的功能,否则可以使用普通ListBox来实现。