gwt Вертикальная панель foreach

Можно ли перебрать VerticalPanel и захватить только определенный виджет.

Я знаю, что вы можете сделать это со списком строк в GWT, но это не работает для виджетов. Мне нравится короткая ручная итерация, однако, если есть более длинный метод, это также приветствуется.

Задача: в основном определить, какой флажок в этой панели установлен.

это работает: базовый foreach для (строка i: my_list) ... ...

это не будет: виджет gwt для (флажок ch: my_vpanel) ... ...

Ошибка, которую я получаю: невозможно преобразовать тип элемента Widget в CheckBox.


person help    schedule 16.09.2011    source источник


Ответы (1)


Вы можете повторять виджеты ComplexPanel, такие как

for (Widget widget : verticalPanel) {
    //Do stuff
}

or

Iterator<Widget> it = verticalPanel.iterator();
while(it.hasNext()){
    Widget widget = it.next();
    //Do stuff
}

or

for (int i=0;i<verticalPanel.getWidgetCount();i++){
    Widget widget = verticalPanel.getWidget(i);
    //Do stuff
}

и чтобы увидеть, является ли виджет типом CheckBox, который вы можете использовать

if (widget instanceof CheckBox){
    CheckBox checkBox = (CheckBox) widget;
}
person pistolPanties    schedule 16.09.2011
comment
Спасибо, это то, что я искал, instanceof. Я предполагал в своем исходном цикле for, что приведение типов будет обрабатываться автоматически, и приводить каждый виджет, если они были отмечены флажком. Но это действительно помогло. - person help; 19.09.2011