如何使用UIBinder在GWT的TabPanel中设置默认选项卡选择

如何使用UIBinder在GWT的TabPanel中设置默认选项卡选择,gwt,uibinder,tabpanel,Gwt,Uibinder,Tabpanel,我在ui.xml文件中编写了一个选项卡面板。我想保留其中一个选项卡作为默认选择(如果用户没有指定任何内容,您可能会认为第0个选项卡已被选中,但这不是行为)。如何通过ui.xml文件在中执行此操作?我试图搜索一个属性,如 但这似乎不起作用。我不想以编程方式设置默认选择 提前谢谢。我找不到任何其他方法,因此我为TabPanel制作了一个简单的包装: public class TabPanelWrapper extends Composite implements HasWidgets {

我在ui.xml文件中编写了一个选项卡面板。我想保留其中一个选项卡作为默认选择(如果用户没有指定任何内容,您可能会认为第0个选项卡已被选中,但这不是行为)。如何通过ui.xml文件在中执行此操作?我试图搜索一个属性,如

但这似乎不起作用。我不想以编程方式设置默认选择


提前谢谢。

我找不到任何其他方法,因此我为TabPanel制作了一个简单的包装:

public class TabPanelWrapper extends Composite implements HasWidgets {

    private FlowPanel wrapper;
    private TabPanel tabPanel;
    private Integer defaultTab;

    public TabPanelWrapper() {
        wrapper = new FlowPanel();
        initWidget(wrapper);
    }

    public void setDefaultTab(int dafaultTab) {
        this.defaultTab = dafaultTab;
        if(tabPanel != null && defaultTab < tabPanel.getWidgetCount())
            tabPanel.selectTab(defaultTab);
    }

    @Override
    public void add(Widget w) {
        if(w instanceof TabPanel && tabPanel == null) {
            tabPanel = (TabPanel) w;
            if(defaultTab != null && defaultTab < tabPanel.getWidgetCount())
                tabPanel.selectTab(defaultTab);
            wrapper.add(tabPanel);
        }
    }

    @Override
    public void clear() {
        wrapper.clear();
    }

    @Override
    public Iterator<Widget> iterator() {
        return wrapper.iterator();
    }

    @Override
    public boolean remove(Widget w) {
        return wrapper.remove(w);
    }
}
唯一的陷阱是TabPanel被包装在表示FlowPanel的额外
元素中

使用此方法,您可以向任何小部件添加任何属性;)

<t:TabPanelWrapper defaultTab="1">
    <g:TabPanel>
        <g:Tab text="Header #1">
            <g:FlowPanel>
                <g:Label>Content #1</g:Label>
            </g:FlowPanel>
        </g:Tab>
        <g:Tab text="Header #2">
            <g:FlowPanel>
                <g:Label>Content #2</g:Label>
            </g:FlowPanel>
        </g:Tab>
        <g:Tab text="Header #3">
            <g:FlowPanel>
                <g:Label>Content #3</g:Label>
            </g:FlowPanel>
        </g:Tab>
    </g:TabPanel>
</t:TabPanelWrapper>