簡體   English   中英

GWT:無法將標簽強制轉換為com.google.gwt.user.client.ui.CheckBox

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM