【发布时间】:2020-02-18 08:24:35
【问题描述】:
我想达到以下目标: 对话框包含一个带有标签栏的布局,而标签栏又包含每个标签的组件容器。
private final Map<Tab, Component> tabComponentMap = new LinkedHashMap<>();
public DialogLayout()
{
super();
this.initUI();
final Tabs tabs = this.createTabs();
final Div contentContainer = new Div();
this.addComponentAtIndex(1, tabs);
this.addComponentAtIndex(2, contentContainer);
tabs.addSelectedChangeListener(e -> {
contentContainer.removeAll();
contentContainer.add(this.tabComponentMap.get(e.getSelectedTab()));
});
contentContainer.add(this.tabComponentMap.get(tabs.getSelectedTab()));
}
private Tabs createTabs()
{
this.tabComponentMap.put(new Tab("1"), new View1());
this.tabComponentMap.put(new Tab("2"), new View2());
this.tabComponentMap.put(new Tab("3"), new View3());
return new Tabs(this.tabComponentMap.keySet().toArray(new Tab[]{}));
}
当我打开对话框时,选项卡 1 应该打开(这是默认设置)。每个视图中有两个按钮(后退/下一个)影响选项卡之间的导航。因此,如果我在带有 View1 的 Tab1 中并单击下一步,则会打开带有 View2 的 Tab2,依此类推。如果可能,对话框应保持不变,因此只有选项卡会更改。我如何实现这个目标以及每个视图中的按钮单击事件需要包含什么?我不知道如何从各个视图访问 DialogLayout 中的选项卡。
【问题讨论】:
-
我可以将标签和
new View1(tabs, ...)中的所有其他标签对象交给 View1 类,但还有其他可能吗? -
@BasilBourque 忽略滑块功能。我不小心混合了两个想法。我马上改帖
-
顺便说一下,你可能喜欢
paged-tabs组件,它包装了与 Vaadin 捆绑的Tabs小部件。 -
您可能正在尝试做的是引导用户通过一系列渐进的步骤来收集选择以实现目标,并且能够返回并更改他们之前的一些选择。这种功能被称为Wizard,这是微软技术作家多年前发明的一种用户界面习惯用法。用户可以理解水平选项卡的任意切换,而没有朝着目标前进的概念。使用带有右下角的“继续”/“返回”按钮的垂直标签,可以将标签移动到标签。