2016-08-12 87 views
0

我寫了非常基本的GWT應用程序,其中SmartGWt選項卡在兩個選項卡上都帶有標籤呈現。SmartGWT選項卡丟失GWT內容

問題我在這裏面臨的是,當我將GWT基於標籤放在第二個選項卡並重新加載應用程序時,第一個選項卡呈現基於SmartGWT的標籤,但是當我點擊第二個選項卡以查找GWT標籤時,它不會出現,我很驚訝,爲什麼第一個標籤內容被刪除,因爲它之前出現在點擊第二個標籤之前。

請看下面的代碼。

package com.test.client; 

import com.smartgwt.client.widgets.Canvas; 
import com.smartgwt.client.widgets.tab.Tab; 
import com.smartgwt.client.widgets.tab.TabSet; 
import com.google.gwt.core.client.EntryPoint; 
import com.google.gwt.user.client.ui.Label; 
import com.google.gwt.user.client.ui.RootPanel; 

public class TestGWT implements EntryPoint 
{ 
public void onModuleLoad() 
{ 
    TabSet tabSet = new TabSet(); 
    tabSet.setWidth("400px"); 

    Tab tab1 = new Tab("Tab1"); 
    Canvas pane = new Canvas(); 
    pane.addChild(new com.smartgwt.client.widgets.Label("test label")); 
    tab1.setPane(pane); 

    Tab tab2 = new Tab("Tab2"); 
    Canvas pane2 = new Canvas(); 
    pane2.addChild(new Label("test label2")); // I need to put GWT widget in SmartGWT tab but it does not render in this tab. Also, it removes contents from first tab 
    tab2.setPane(pane2); 

    tabSet.addTab(tab1); 
    tabSet.addTab(tab2); 

    RootPanel.get("testid").add(tabSet); 
} 
} 

當我設置第二個SmartGWT選項卡首先出現有GWT小部件,那麼事情工作正常。

我正在使用GWT-2.6.1

請在這裏分享您的想法!

問候, Shobhit

+0

您正在使用哪個SmartGWT版本? – mxlse

+0

其SmartGWT 5.0p –

+0

我的答案已通過Sm​​artGWT 2.4和5.0p測試 - 兩個版本均正常工作。 – mxlse

回答

0

問題是添加標籤集到RootPanel。因此,您收到一個

具有現有父窗口小部件的窗口小部件可能無法添加到分離列表中。

錯誤。

變化RootPanel.get("testid").add(tabSet);

tabSet.setHtmlElement((Element) Document.get().getElementById("testid")); 
tabSet.draw(); 

,它會正常工作。

2

雖然我的問題是RootPanel.get("testid").add(tabSet)的原因達成一致,解決方案替換該行以:

tabSet.show(); 

請記住,在SmartGWT的,你應該添加成分使用add()其他組件。嘗試使用ID添加組件很容易出錯。

最後,請記住,同構不鼓勵將SmartGWT的組件與其他庫中的組件混合。雖然這有時是不可避免的,但如果你可以在你的應用程序中避免它,那麼你應該這樣做,因爲這是一個很常見的bug。有關這些索賠的其他來源,請參閱下面的評論。

+0

抱歉不同意,但是這會將tabSet添加到RootPanel而不是'#testid'-Div,因此結構會有所不同,結果可能看起來非常偏移。只有當tabSet不應該添加到某個div時,你的回答也是正確的。 :-) – mxlse

+0

請參閱http://imgur.com/a/p8dPF瞭解其差異(圖像丟失,所以請忽略 - 這是關於位置) – mxlse

+0

@mxlse我在OP代碼中嘗試了我的解決方案,並且它正常工作。你正在假設OP沒有提及的事情,並基於此而進行了降級。 – carlossierra