复制GWT的TabLayoutPanel </g:tab>的<g:tab>元素

时间:2010-09-02 18:35:08

标签: gwt uibinder

我发现GWT选项卡面板对于我需要做的样式很笨拙,所以我正在尝试制作我自己的简单选项卡面板。基本上是标签的HTML5 <nav>元素和显示内容的DeckPanel。让我们用CSS3来解决剩下的问题。

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实例中。标签。但我不知道如何复制这种功能。

2 个答案:

答案 0 :(得分: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属性定义。

答案 1 :(得分:1)

要为<g:tab><g:header>等小部件使用custome标签,您需要创建自定义ElementParse并将其注册到UiBinderWriter。不幸的是,没有编辑gwt的源代码就没有简单的方法。

有用的链接:

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

TabLayoutPanelParser