我正在创建一个名为'Cell'的新类,它扩展了GWT Widget类。此类的目的是成为电子表格中的单元格 - 因此它必须能够在GWT Label对象和GWT TextBox对象之间切换。
我能想到这样做的唯一方法是使Cell扩展Widget并包含一个名为'cell'的私有Widget,我可以存储当前的Label或TextBox对象。像这样......
public class Cell extends Widget {
private Widget cell;
...
}
不幸的是,这个解决方案并不理想,因为如果我希望Cell像Widget一样完全运行,我将覆盖Widget的方法来指向我的内部'cell'小部件。有没有更优雅的方法来创建一个Cell Widget,它可以是Label或TextBox?
答案 0 :(得分:8)
为什么不扩展Composite而不是扩展Widget?
public class Cell extends Composite {
private Label label;
private TextBox textBox;
private SomeContainerWidget container;
...
}
只需根据需要将label
或textBox
窗口小部件添加/移除到container
。
使用复合是更优雅的方式,因为您不公开整个Widget界面,而只展示电子表格单元格所需的方法。
从GWT文档中检出this section以构建自定义小部件以获取更多信息。