我有一个Vaadin-TabSheet,在每个标签中都有一个BrowserFrame。我注意到以下不良行为:单击更改标签时,浏览器框架会重新加载,可能会擦除用户可能在该标签中所做的任何输入。
如何避免重新加载标签页? tabSheet是否可以替代?
最佳答案
现在,我已经建立了自己的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);
}