Java GWT:无法将标签强制转换为com.google.GWT.user.client.ui.CheckBox

Java GWT:无法将标签强制转换为com.google.GWT.user.client.ui.CheckBox,java,gwt,checkbox,Java,Gwt,Checkbox,我有一排复选框。我想循环它,但在循环过程中,所有项目都被视为小部件。所以我不得不在循环中进行转换,但出现了令人惊讶的错误。上面说 ClassCastException:com.google.gwt.user.client.ui.无法强制转换标签 转到com.google.gwt.user.client.ui.复选框 这真让我吃惊。有人能解释一下发生了什么吗??当然,我可以将这些复选框添加到列表中,并在其中循环,在这种情况下,强制转换应该可以工作 这是我的密码: public void test(

我有一排复选框。我想循环它,但在循环过程中,所有项目都被视为小部件。所以我不得不在循环中进行转换,但出现了令人惊讶的错误。上面说

ClassCastException:com.google.gwt.user.client.ui.无法强制转换标签 转到com.google.gwt.user.client.ui.复选框

这真让我吃惊。有人能解释一下发生了什么吗??当然,我可以将这些复选框添加到列表中,并在其中循环,在这种情况下,强制转换应该可以工作

这是我的密码:

public void test() {
    Grid checkBoxGrid = new Grid();
    checkBoxGrid.setWidget(0, 0, new CheckBox("first"));
           // .. etc .. ///
    checkBoxGrid.setWidget(1, 1, new CheckBox("fourth"));

    for (Widget widgetBox : checkBoxGrid) {
        CheckBox box = (CheckBox) widgetBox; // here is the problem
        System.out.println(box.getValue());
    }
}

有人知道为什么会这样吗?

尽管您正在添加复选框,但网格中还有许多其他对象,也就是小部件(可能是出于标题目的而内置的标签),您并不知道。发布网格的屏幕截图可以更好地演示

再次谈到实际问题,并非所有小部件都是神奇的复选框。还有其他小部件

当您需要时,内置小部件也会进入迭代器

检查您的实例是否为if复选框,然后尝试对其进行分级

for (Widget widgetBox : checkBoxGrid) {
       if(widgetBox instanceof CheckBox){
        CheckBox box = (CheckBox) widgetBox; // No problem now
        System.out.println(box.getValue());
    } }

嗯,我犯了一个非常愚蠢的错误;网格也添加了一个标签。。。很抱歉