![](/img/trans.png)
[英]GWT DataGrid error: `com.google.gwt.user.client.ui.IsWidget is not defined` while appending to `SimplePanel`
[英]GWT: Label cannot be cast to com.google.gwt.user.client.ui.CheckBox
我有復選框網格。 我想循環瀏覽,但是在循環過程中,所有項目都被視為小部件。 因此,我必須強制執行循環,但是會出現令人驚訝的錯誤。 它說
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());
}
}
有人知道為什么會發生嗎?
盡管您要添加復選框,但網格中還有許多其他對象,也稱為小部件(可能是用於標題的內置標簽),您並不知道。 發布網格的屏幕快照可以演示得更好。
再次遇到實際問題,所有小部件都不是神奇的復選框。 也有其他小部件。
當您使用迭代器獲取所有子窗口小部件時 ,內置窗口小部件也將進入迭代器。
檢查您的實例是否為Checkbox,然后嘗試對其進行等級轉換。
for (Widget widgetBox : checkBoxGrid) {
if(widgetBox instanceof CheckBox){
CheckBox box = (CheckBox) widgetBox; // No problem now
System.out.println(box.getValue());
} }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.