2010-09-02 22 views
3

我發現GWT標籤面板笨重的樣式我需要做的,所以我試圖做我自己的,簡單的標籤面板。基本上用於標籤的HTML5 <nav>元素和用於顯示內容的DeckPanel。讓我們用CSS3來解決其餘的問題。重複GWT的TabLayoutPanel的<g:tab>元素

的GWT TabLayoutPanel有它用來定義一個標籤的內容,這些「特殊」標籤:

<g:TabLayoutPanel> 
    <g:tab> 
     <g:header>Tab Title</g:header> 
     <g:OtherWidget>Tab contents</g:OtherWidget> 
    </g:tab> 
</g:TabLayoutPanel> 

我指的是<g:tab><g:header>。我看到這些類型的標籤在不同的地方使用,但我不知道如何創建它們。看看TabLayoutPanel源代碼,我發現它有一個add方法,它需要兩個小部件,並且從中它將一個小部件(內容)放到一個面板中顯示,另一個(頭部)放入到TabLayoutPanel.Tab的一個實例中。但我不知道如何複製這種功能。

回答

1

要使用custome標籤爲您的小部件,如<g:tab><g:header>您需要創建一個自定義ElementParse並註冊它與UiBinderWriter。不幸的是,沒有編輯gwt的源代碼的簡單方法。

有用的鏈接:

A link to the issue of not being able to create custom ElementParser

TabLayoutPanelParser

+0

那麼,這並不值得。我想我可以只使用一個簡單的複合容器。第一個孩子是頭,第二個是內容。謝謝! – 2010-09-03 00:26:44

5

在GWT 2.1還有的UiChild attribute。這很酷。

@UiChild public void addTabDef(Widget page, String title) {...} 

title參數將被填充在tabdef標籤的名稱相同的屬性,就像這樣:

<v:tabdef title="Tab one"><g:Label>Page one.</g:Label></v:tabdef> 

編輯:要清楚,tabdef沒有任何地方所定義一類; UiChild屬性定義瞭解析期間的期望行爲。