在Vaadin中,一旦你有一个TabSheet,并且一些标签已经打开,你不希望同一个标签,包含相同的内容,可以多次打开。 如何检查Tab已经打开并将其设置为选定的?
答案 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;
}
}