gpt4 book ai didi

java - GWT:标签无法转换为 com.google.gwt.user.client.ui.CheckBox

转载 作者:行者123 更新时间:2023-12-01 12:25:09 24 4
gpt4 key购买 nike

我有复选框网格。我想循环遍历它,但在循环期间所有项目都被视为小部件。所以我必须在循环中进行转换,但出现了令人惊讶的错误。它说

ClassCastException: com.google.gwt.user.client.ui.Label cannot be cast to com.google.gwt.user.client.ui.CheckBox

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

这是我的代码:

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());
}
}

有人知道为什么会发生这种情况吗?

最佳答案

尽管您添加了复选框,但网格中还有许多您不知道的其他对象,即小部件(可能是用于标题目的的内置标签)。贴出grid的截图可以更好的展示。

回到实际问题,所有小部件都不是神奇的复选框。还有其他小部件。

当你是using iterator to get all the child widgets时,内置小部件也进入迭代器。

检查您的实例是否为复选框,然后尝试对其进行强制转换。

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

关于java - GWT:标签无法转换为 com.google.gwt.user.client.ui.CheckBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26420475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com