Extending GWT's Widget Class

谁都会走 提交于 2019-12-08 08:15:28

问题


I'm making a new class called 'Cell' which extends the GWT Widget class. The purpose of this class is to be a cell in a spreadsheet -- it therefore must be able to switch between being a GWT Label object and a GWT TextBox object.

The only way that I can think of doing this is by making Cell extend Widget and include a private Widget called 'cell' which I can store the current Label or TextBox object with. Like so...

public class Cell extends Widget {

private Widget cell;

...

}

Unfortunately, this solution is not ideal because if I want Cell to fully operate like a Widget, I will have override Widget's methods to point to my inner 'cell' Widget. Is there a more elegant way of creating a Cell Widget which can be either a Label or TextBox?


回答1:


Why not extend Composite instead of extending Widget?

public class Cell extends Composite {
    private Label label;
    private TextBox textBox;
    private SomeContainerWidget container;

   ...
}

Just add/remove the label or the textBox widget to the container as needed.

Using composite is the more elegant way as you do not expose the entire Widget interface, but only the methods needed for your spreadsheet cell.

Checkout this section from GWT docs for building custom widgets for more information.



来源:https://stackoverflow.com/questions/2082864/extending-gwts-widget-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!