2015-03-03 54 views
1

我對SimplePanel及其子窗口小部件有疑問。我捕捉以下例外SimplePanel和子窗口小部件

SimplePanel can contain one child widget 

在我的代碼,從SimplePanel繼承了獨特元件是ScrollPanel其被使用如下:

scroll = new ScrollPanel(); 
scroll.add(internalVerticalPanel); 
internalVerticalPanel2.add(scroll); 

的「internalVerticalPanel」目的通過一種由水平面板和標籤。這種組合不可能嗎?

非常感謝你提前, 問候

回答

0

這只是作爲例外,說 - 你可以添加只有一個孩子到SimplePanel容器(和它的子類,像ScrollPanelFormPanel)。來自異常的堆棧跟蹤應該指出第二個孩子正在添加的位置。

至於你的問題的第二部分 - SimplePanel的(一)孩子本身可以有多個孩子(如果它的實現允許的話)。所以,你的代碼已經證明我們應該爲你所期望的工作 - 這是你還沒有告訴我們運作錯誤的代碼;)

這是OK:

Whatever container 
|_ ScrollPanel 
    |_FlowPanel <- the only direct child of ScrollPanel 
    |_SimplePanel 
    |_TextBox 
    |_ScrollPanel 
    |_FlowPanel 
    |_ScrollPanel 

這似乎是您的情況:

ScrollPanel 
|_ChildWidget1 <- child number 1 of ScrollPanel 
| |_TextBox 
| |_TextBox 
| |_Label 
|_ChildWidget2 <- child number 2 of ScrollPanel -> error! 

ChildWidget1可以有多個孩子(只要它支持多個孩子 - 例如,它是一個FlowPanel)。這是一個錯誤ScrollPanel有多個直接子:ChildWidget1ChildWidget2

+0

謝謝你的評論!代碼創建了兩個ScrollPanel對象(它被複制到代碼的另一部分中),並且我已經移除了第二個對象,保持包含更高級別對象的單個Scroll,並且它可以工作。那麼,我想,可以創建一個Scroll的單個對象,不僅是一個孩子,對吧? – 2015-03-04 13:39:30

+0

沒有看到確切的代碼,很難說發生了什麼,但我確信*你可以*創建'ScrollPanel'(或其他'SimplePanel's)的多個實例。只要確保每個實例只有*一個* **直接**孩子。我會在我的答案中添加一些示例。 – 2015-03-04 20:29:30

+0

這不完全是我所做的。我創建了一個對象ScrollPanel panel = new ScrollPanel();與其獨特的孩子。一旦插入到主屏幕中,我創建了一個新的對象(即scroll = new ScrollPanel())和相同的過程。在這裏,代碼被破壞了......現在,我在所有代碼中都有一個對象,它的工作原理!謝謝! – 2015-03-05 07:02:21

相關問題