2010-01-17 5 views
1

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

Единственный способ, с помощью которого я могу думать об этом, это сделать вид расширения ячеек и включить частный виджет под названием «ячейка», с которым я могу сохранить текущий объект Label или TextBox. Как и ...

public class Cell extends Widget { 

private Widget cell; 

... 

} 

К сожалению, это решение не является идеальным, потому что, если я хочу сотовый, чтобы в полной мере работать как виджет, я буду иметь методы отменяют виджета, чтобы указывать на моей внутренней «ячейки» Widget. Есть ли более элегантный способ создания Cell Widget, который может быть либо Label, либо TextBox?

ответ

8

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

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

    ... 
} 

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

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

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

+0

Блестящий! Большое спасибо, я только начал смотреть на GWT и не знал об этом классе. –

+0

Что делать, если я не могу расширить Composite? – marines

+0

Не могли бы вы предоставить более подробную информацию о том, почему вы не можете расширить Composite? – Anurag

Смежные вопросы