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