2014-11-04 155 views
1

請參考下面的代碼。
我寫了一個SamplePanel拿着小部件。 我沒有擴展任何Panel類創建SamplePanel
當我測試它時,它按預期工作。
現在我的問題是,我可以繼續創建這樣的面板嗎?或者我應該從任何現有的GWT面板extend
任何表現或任何其他問題可能會在未來?關於創建容器的建議

import com.google.gwt.user.client.DOM; 
import com.google.gwt.user.client.Element; 
import com.google.gwt.user.client.ui.TextBox; 
import com.google.gwt.user.client.ui.Widget; 

public class SamplePanel { 

    private Element divContainer; 

    public SamplePanel() { 
     divContainer = DOM.createDiv(); 

    } 

    public void addWidgets(Widget... widgets) { 

     for (Widget widget : widgets) { 
      addWidget(widget); 
     } 
    } 

    public void addWidget(Widget widget) { 

     if (widget instanceof TextBox) { 
      widget.getElement().addClassName("textfieldtheme"); 
     } 
     divContainer.appendChild(widget.getElement()); 

    } 

    public Element getContainer() { 
     return divContainer; 
    } 

} 

回答

0

許多標準的GWT小部件(包括面板)具有不同的瀏覽器特定實現並實現許多不同的接口。

例如,這是由一個GWT面板實現的接口列表:

HasAttachHandlers,HasHandlers,事件監聽,HasVisibility, HasWidgets,HasWidgets.ForIsWidget,IsWidget, java.lang.Iterable

LayoutPanel實現更:

HasAttachHandlers,HasHandlers,EVENTLIST ENER,AnimatedLayout, HasVisibility,HasWidgets,HasWidgets.ForIsWidget,IndexedPanel, IndexedPanel.ForIsWidget,IsWidget,ProvidesResize,RequiresResize, java.lang.Iterable

您的面板沒有實現它們。也許它們不是您的用例所必需的,但是當您構建更復雜的用戶界面時很容易錯過某些東西。

我始終更喜歡使用由成千上萬的開發人員在實際應用中開發和測試的小部件,即使我可以輕鬆地構建類似的東西。

+0

好的。謝謝你的寶貴意見。 – user414967 2014-11-04 05:43:53