2011-01-11 47 views
0

我有以下課程來管理基於用戶選擇的菜單項顯示的內容。我遇到了一個問題,它不會刪除以前的小部件。我通過使用getWidgetIndex檢查了面板中存在的小部件,並且試圖使用對象和索引刪除小部件,但沒有成功。從GWT FlowPanel中移除小部件

當我嘗試刪除我得到一個異常,這也包括在下面。想法?

public class BaseContentHandler implements ClickHandler{ 

    private Content item; 

    public BaseContentHandler(Content content){ 
     this.item = content; 
    } 

    @Override 
    public void onClick(ClickEvent event) { 


     if(currentWidget != null){ 
      contentPanel.remove(contentPanel.getWidgetIndex(currentWidget)/*currentWidget*/);  
     } 
     currentWidget = this.item; 
     contentPanel.add(this.item); 

    } 

} 

例外:(類型錯誤):d是空 堆棧:BWB

其他建議也歡迎。

詹姆斯

+0

「currentWidget」在哪裏定義? – Jla 2011-01-11 15:53:35

回答

0

你可能會更好使用.hide()上currentWidget和.show()上this.item,讓他們都在面板上,而不是動態插入和刪除它們。

0

您發佈的代碼片段中缺少某些內容 - contentPanel定義了哪裏?

我想爲NPE的唯一可能的點這一行: contentPanel.remove(contentPanel.getWidgetIndex(currentWidget)/ currentWidget /);

看來您描述的異常來自JavaScript工具,因爲「d」是GWT編譯的結果,因此它是一個javascript對象。要從javascript級別獲得更詳細的信息,您應該以詳細模式編譯GWT項目:

  1. 單擊「編譯GWT項目」圖標(在Eclipse中)。
  2. 選擇「輸出樣式」 - 詳細並編譯。
  3. 再次運行您的項目,您將得到相同的異常,但名稱會告訴您什麼是您使用的Java對象,以及java代碼中發生異常的原始行是什麼。