Vaadin选项卡意外刷新选项卡内容

时间:2018-08-16 10:17:14

标签: java tabs vaadin vaadin8

我有一个Vaadin-TabSheet,在每个标签中都有一个BrowserFrame。我注意到以下不良行为:单击更改标签时,浏览器框架会重新加载,可能会擦除用户可能在该标签中进行的任何输入。

如何防止重新加载标签页? tabSheet可以替代吗?

1 个答案:

答案 0 :(得分:0)

我现在已经建立了自己的TabSheet。 我尝试在选项卡内容上使用setVisible,但这也使浏览器框架重新加载。所以我想出了以下代码来更改内容的大小:

private final HorizontalLayout buttons;
private final GridLayout contents;

/**
 * Construct a new MyTabSheet
 */
public MyTabSheet() {
    buttons = new HorizontalLayout();
    contents = new GridLayout();
....

        if(t.isSelected()) {
            selectedComponent = t.getComponent();
        } else {
            t.getComponent().setSizeUndefined();
            t.getComponent().setWidth(0.0f, Unit.PIXELS);
            t.getComponent().setHeight(0.0f, Unit.PIXELS);
        }
    }

    if(null != selectedComponent) {
        String frameHeight;
        if(selectedComponent instanceof BrowserFrame) {
            BrowserFrame bf = (BrowserFrame)selectedComponent;
            frameHeight = (String) bf.getData();
        } else {
            frameHeight = "800px";
        }
        selectedComponent.setSizeFull();
        selectedComponent.setHeight(frameHeight);
    }