如何查找是否已在Vaadin中打开Tab并将其设置为活动而不是创建新的

时间:2011-04-26 07:37:38

标签: vaadin

在Vaadin中,一旦你有一个TabSheet,并且一些标签已经打开,你不希望同一个标签,包含相同的内容,可以多次打开。 如何检查Tab已经打开并将其设置为选定的?

4 个答案:

答案 0 :(得分:3)

Vaadin的TabSheet默认情况下检查一个组件是否已经通过比较组件的哈希码来降低。

这意味着您必须在要添加到TabSheet的组件中实现方法hashCode()。

答案 1 :(得分:3)

在制表符组件中使用迭代器,并与名称进行比较。

Iterator<Component> i = tabSheet.getComponentIterator();
    while (i.hasNext()) {
        Component c = (Component) i.next();
        Tab tab = tabSheet.getTab(c);
        if (name.equals(tab.getCaption())) {
            tabSheet.setSelectedTab(c);
            return;
        }
   }

答案 2 :(得分:0)

在新的Vaadin中,它可以通过这种方式解决:

Component component = //...
for (Component c : tabSheet) {
    if (c.equals(component)) {
        // duplicate...
    }
}

但正如@CRH之前提到的,你应该照顾equal()hashCode()正确性。

答案 3 :(得分:0)

就我而言,可以按照以下方式完成:

Component cmp = /*you component with a description*/;


for (Component c : tabSheet) {
 if (c.getDescription().equals(cmp.getDescription())) {
     System.out.println("Equals Equals");
     return;
 }


}