2011-05-20 2 views
1

Можно ли перебирать все элементы управления текстовыми полями, определенные в составном виджете? Как и мне, мне нужно извлечь значения всех текстовых полей, чтобы проверить, существуют ли они - текстовые поля должны иметь в себе некоторые данные.Gwt итерация текстовых элементов управления в Composite

Так что я надеялся иметь метод, как:

for(Widget w: this.getChildren) 
{ 
     //if widget is a textbox - check value 
} 

Composite класс не имеет метод, как GetChildren ни метод, где я могу получить элементы данного класса - или имя, и если я получаю все элементы, использующие NodeList, тогда мне нужно рекурсивно идти, пока не найду текстовое поле. Есть ли более подходящий способ сделать это?

ответ

2

Как автор подкласса Composite, вы можете включить такое поведение, реализовав HasWidgets (или, точнее, что-то вроде getWidgetIterator()).

Невозможно сделать это для произвольного композита.

+0

Если вы используете HasWidgets - тогда было бы разумно добавить виджеты в Composite динамически и установить yes = true в UiFields ?.Otherewise, как бы пользовательский итератор знал о количестве добавленных виджетах, если определения есть в ui. xml-файлы? – Anna

+0

Вам нужно будет запрограммировать итератор, чтобы узнать о виджетах. 'ComplexPanel' уже реализует' HasWidgets', поэтому, если вы создаете файлы ui.xml со списком виджетов в FlowPanel (или другой complexPanel), вы можете сделать что-то вроде (Widget child: flowPanel) {}; –

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