Java 吕震中本:制作自定义列表框的最佳方法是什么

Java 吕震中本:制作自定义列表框的最佳方法是什么,java,gwt,Java,Gwt,我有一个关于定制GWT小部件的问题 我将制作一个自定义列表框,用于执行语言选择。我试图通过扩展GWT的ListBox类来实现这一点,它是有效的 public class LanguageListBox extends ListBox { .... } 然而,我认为从Java的角度来看,我们可能更喜欢复合而不是继承。我确实读过一些建议扩展复合组件而不是小部件本身的文章 public class LanguageListBox extends Widget { private fin

我有一个关于定制GWT小部件的问题

我将制作一个自定义列表框,用于执行语言选择。我试图通过扩展GWT的ListBox类来实现这一点,它是有效的

public class LanguageListBox extends ListBox {
   ....
}
然而,我认为从Java的角度来看,我们可能更喜欢复合而不是继承。我确实读过一些建议扩展复合组件而不是小部件本身的文章

public class LanguageListBox extends Widget {
    private final ListBox listBox;

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

    ......
}
这门课不起作用。我相信我没有创建将对LanguageListBox的特定方法的调用转发到包装的ListBox的桥接方法。然而,我已经检查了ListBox的许多方法,为了使这个设计工作,我需要提出哪种方法

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

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

尽管合成通常比继承更受欢迎。在这种情况下,我肯定会选择继承,因为您基本上希望在小部件中添加新功能或自定义现有功能,同时保留
ListBox
提供的几乎所有功能。我认为,通常在处理GUI组件时,继承是常见的,并且在大多数情况下是最好的解决方案。 但是,您应该确保,如果不继承正常的
ListBox
,则无法实现相同的效果

正如您提到的,这个类将无法工作,因为在
ListBox
LanguageListBox
之间绝对没有桥梁。这没有多大意义

至于语言选择。我认为它可以通过普通的
ListBox
实现,除非你想拥有一些非常特殊的功能