tabs 选项卡

一组选项卡,通过选项卡的选择可以更换关联视图中的内容。与 tabSheet 不同,该组件本身不能包含任何内容。

  • XML 元素:tabs

  • Java 类:Tabs

基本用法

默认情况下,选项卡在水平方向依次排列。选项卡通常位于关联内容区域的顶部或底部。

下面的示例演示了 tabs 的基本功能。

tabs basic
XML 代码
<tabs id="tabs">
    <tab id="tab1" label="Tab One"/>
    <tab id="tab2" label="Tab Two"/>
</tabs>

示例中,组件包含两个内部的 tab 元素。若要更新与所选选项卡关联的内容,需要定义 SelectedChangeEvent 事件的处理方法。选择选项卡时,将触发此事件,从而可以更新显示的内容。

方向

虽然选项卡默认是水平方向排列的,但在某些场景中,也可以使用垂直排列。例如,对于数量较多的选项卡,垂直排列可能为标签文本展示提供更多的空间。

tabs vertical

通过 orientation 修改 tabs 的排列方向。

状态

tab 可以选择、不选择或禁用:

tabs states

通过这些状态开发者可以确定哪个选项卡当前处于活动状态,以及哪些选项卡可能暂时不可用或被禁用。

标签

选项卡内部可以使用几乎任何组件。可以编写易分辨的选项卡标签:

tabs basic2
XML 代码
<tabs>
    <tab id="profileTab">
        <icon icon="USER"/>
        <span text="Profile"/>
    </tab>
    <tab id="notificationsTab">
        <icon icon="BELL"/>
        <span text="Notifications"/>
    </tab>
    <tab id="settingsTab">
        <icon icon="COG"/>
        <span text="Settings"/>
    </tab>
</tabs>

样式版本

该组件的外观可以通过 themeNames 属性自定义。可以选择下面一个样式主题或按需组合:

icon-on-top

选项卡的标签 包含图标时,将图标放置于文字上方:

tabs icon on top

每个 tab 元素都需要单独配置这个主题。

显示 XML
<tabs>
    <tab id="profileTab" themeNames="icon-on-top">
        <icon icon="USER"/>
        <span text="Profile"/>
    </tab>
    <tab id="notificationsTab" themeNames="icon-on-top">
        <icon icon="BELL"/>
        <span text="Notifications"/>
    </tab>
    <tab id="settingsTab" themeNames="icon-on-top">
        <icon icon="COG"/>
        <span text="Settings"/>
    </tab>
</tabs>

centered

将选项卡放置在容器或视图的中心,而非默认的左对齐位置:

tabs centered

small

选项卡更小:

tabs small

minimal

将样式简化为仅显示选项卡标签,而不显示任何其他视觉元素:

tabs minimal

hide-scroll-buttons

当选项卡过多时,会展示用于显示溢出选项卡的按钮。使用这个主题时,这些按钮会被隐藏:

tabs hide scroll buttons

注意在隐藏了按钮时,选项卡的水平滚动会比较困难。

equal-width-tabs

为每个选项卡分配相等的空间,并禁用滚动功能:

tabs equal width

XML 属性

orientation

定义选项卡方向。支持下列值:

  • HORIZONTAL - 标签水平方式。这是默认值。

  • VERTICAL - 标签垂直放置。

事件和处理器

在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 CodeGenerate 菜单(Alt+Insert / Cmd+N)生成。

SelectedChangeEvent

当用户选择其他选项卡时触发 com.vaadin.flow.component.tabs.Tabs.SelectedChangeEvent 事件。

下面的示例中,当选中不同选项卡时添加一个标签:

@ViewComponent
private VerticalLayout content;

@Subscribe("tabs")
public void onTabsSelectedChange(final Tabs.SelectedChangeEvent event) {
    setTabContent(event.getSelectedTab());
}
private void setTabContent(Tab tab) {
    content.removeAll();
    Div tabLabel = uiComponents.create(Div.class);
    if ("tab1".equals(tab.getId().orElse(null))) {
        tabLabel.setText("Tab One is selected");
        content.add(tabLabel);
    } else {
        tabLabel.setText("Tab Two is selected");
        content.add(tabLabel);
    }
}

XML 内部元素

如需通过 Jmix Studio 添加元素,请在 XML 或 Jmix UI 结构面板中选中该组件,然后点击组件属性面板中的 Add 按钮。

tab

单独的选项卡通过 tab 元素定义。

tab XML 属性
tab 事件和处理器

参考