2014-05-19 5 views
0

J'ai un menu de l'onglet Vaadin, chaque onglet contient bien sûr un contenu différent. Maintenant, si le contenu est une propre classe avec du contenu généré dynamiquement, comment puis-je forcer la mise à jour du contenu si un onglet est sélectionné?Comment mettre à jour du contenu dans un onglet vaadin sur le changement de sélection?

Ma classe de contenu implements View, ainsi comme un enter(ViewChangeEvent event) qui serait normalement déclenché si j'utilise le Navigator pour changer la vue. Cependant, alors j'utilise un onglet pour changer le contenu, il n'y a pas ViewChangeEvent tiré. Comment puis-je déclencher la méthode enter() du contenu de la vue spécifique de l'onglet?

@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

Pourquoi ne pas utiliser TabSheet.SelectedTabChangeEvent et de l'auditeur? Docs [ici] (https://vaadin.com/book/vaadin7/-/page/layout.tabsheet.html). – Mena

Répondre

1

Vous pouvez utiliser un Shortcut Listener comme ça

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"); 
    } 
}); 
Questions connexes