Расширение класса виджетов GWT - PullRequest
1 голос
/ 18 января 2010

Я создаю новый класс под названием Cell, который расширяет класс виджетов GWT. Цель этого класса - быть ячейкой в ​​электронной таблице - поэтому он должен иметь возможность переключаться между объектом GWT Label и объектом GWT TextBox.

Единственный способ, которым я могу думать об этом, - заставить Cell расширять Widget и включать частный Widget с именем 'cell', с помощью которого я могу сохранить текущий объект Label или TextBox. Вот так ...

public class Cell extends Widget {

private Widget cell;

...

}

К сожалению, это решение не является идеальным, потому что, если я хочу, чтобы Cell работал полностью как виджет, мне придется переопределить методы виджета, чтобы они указывали на мой внутренний виджет cell. Существует ли более элегантный способ создания виджета ячеек, который может быть либо меткой, либо текстовым блоком?

1 Ответ

8 голосов
/ 18 января 2010

Почему бы не расширить Composite вместо расширения Widget?

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

   ...
}

Просто добавьте / удалите виджет label или textBox в container при необходимости.

Использованиесоставной - это более элегантный способ, поскольку вы не предоставляете весь интерфейс Widget, а только методы, необходимые для ячейки электронной таблицы.

Оформление заказа этот раздел из документации GWT для создания пользовательских виджетов для болееинформация.

...