2014-05-19 51 views
0

我有一个Vaadin标签菜单,每个标签当然包含不同的内容。现在,如果内容是具有动态生成内容的自己的类,那么如果选择了选项卡,如何强制更新内容?如何在选择更改时更新vaadin选项卡中的内容?

我的内容类别implements View,因此它是一个enter(ViewChangeEvent event),如果我使用Navigator来更改视图,通常会触发它。 但是,然后我使用一个标签来改变内容,没有ViewChangeEvent发射。 我怎样才能通过触发该标签的特定视图内容的enter()方法?

@VaadinComponent 
@UIScope 
public class MyView extends CssLayout implements View { 
    private Label label; 

    public MyView() { 
     label = new Label("empty"); 
    } 

    @Override 
    public void enter(ViewChangeEvent event) { 
     label.setValue("entered"); 
    } 
} 

@VaadinComponent 
@UIScope 
public class MyMenu extends CssLayout { 
    private TabSheet tabs; 

    public MyMenu() { 
     tabs = new TabSheet(); 
     addComponent(tabs);  
    } 

    @Autowired 
    private MyView myview; 

    @PostConstruct 
    public void init() { 
     tabs.addComponent(myview); 
     //some more tabs 
    } 
} 
+4

你为什么不使用TabSheet.SelectedTabChangeEvent和听众? Docs [here](https://vaadin.com/book/vaadin7/-/page/layout.tabsheet.html)。 – Mena

回答

1

您可以使用Shortcut Listener

component.addShortcutListener(new ShortcutListener("caption", KeyCode.ENTER, null) { 

    private static final long serialVersionUID = 1L; 

    @Override 
    public void handleAction(Object sender, Object target) { 
     label.setValue("entered"); 
    } 
}); 
相关问题