【问题标题】:how to reload or refresh a tab's content base on actions in vaadin如何根据 vaadin 中的操作重新加载或刷新选项卡的内容
【发布时间】:2013-03-13 06:26:25
【问题描述】:

标签的内容在应用程序加载时形成并显示。稍后,选项卡的内容可能会被其他操作更改。我想在每次操作后显示更新的内容。每次单击标签页时,内容都应该刷新/更新。但我失败了。

    //the content of the tab from the "reprintsTab" class
    //in the "reprintsTab" it query data from database and print out
    //later I update the data in the database from somewhere else, and I want the tab shows the new content
    //I want to click the tab sheet to reload the "reprintTab" class and print out the new content

    //here is what I did:

    public TabSheet sheet;

    //add tab and add the content from "reprintTab" into this tab
    sheet.addTab(new reprintsTab());

    //add the listener 
    sheet.addListener(new TabSheet.SelectedTabChangeListener() {

        @Override
        public void selectedTabChange(SelectedTabChangeEvent event) {

        //I know it does not work, because it only reload the class. but not put the content under the tab I want
        new reprintsTab();

        }
    });

我该怎么办?请帮助我,谢谢。

【问题讨论】:

    标签: java tabs actionlistener vaadin


    【解决方案1】:

    您可以使用TabSheet.replaceComponent 方法来做到这一点:

    //Field to store current component
    private reprintsTab currentComponent; 
    
    //during initialization
    currentComponent = new reprintsTab();
    sheet.addTab(currentComponent);
    
    sheet.addListener(new TabSheet.SelectedTabChangeListener() {
        @Override
        public void selectedTabChange(SelectedTabChangeEvent event) {
            reprintsTab newComponent = new reprintsTab();
            sheet.replaceComponent(currentComponent, newComponent);
            currentComponent = newComponent;
        }
    });
    

    此外,您可能希望仅在显示此标签时才重新加载它:

    sheet.addListener(new TabSheet.SelectedTabChangeListener() {
            @Override
            public void selectedTabChange(SelectedTabChangeEvent event) {
                if (event.getTabSheet().getSelectedTab() == currentComponent) {
                    //here goes the code
                }
            }
    });
    

    这应该对您有用,但我建议使用更简洁的方法:将 reprintsTab 实现为组件的容器,创建方法 reloadbuildInterface 方法来刷新其状态,因此您可以调用:

    currentComponent.reload();
    

    当您需要更新界面时。

    另外,我希望reprintsTab 只是一个示例名称,以小写字母开头的 java 类名看起来很难看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 2015-09-09
      • 2021-04-11
      • 1970-01-01
      相关资源
      最近更新 更多