我有一个TabPanel
,其中包含一个SplitLayoutPanel
,里面有两个ScrollPanel
,一个位于中心,另一个位于码头的南边。当我调整浏览器窗口大小时,我的SplitLayoutPanel
不会自动调整大小。我尝试使用此代码解决问题:
Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(ResizeEvent event) {
setSplitPanelSize();
}
});
protected void setSplitPanelSize() {
if (getParent() != null) {
Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
@Override
public void execute() {
mainSplitPanel.setSize(getParent().getOffsetWidth() + "px", getParent().getOffsetHeight() + "px");
}
});
}
}
但使用getParent()
来检索TabPanel
大小是一种不安全的灵魂。是否有另一种方法可以在浏览器大小调整时调整SplitLayoutPanel
(及其元素)的大小?
答案 0 :(得分:4)
Zasz是对的。
SplitLayoutPanel mainPanel = new SplitLayoutPanel() {
@Override
public void onResize() {
super.onResize();
//some other resizing stuff
}
};
答案 1 :(得分:3)
SplitLayoutPanel实现了从DockLayoutPanel扩展的RequiresResize和ProvideResize。您可以覆盖onResize()方法来执行您想要的操作。此外,可能需要在覆盖中调用基于onResize()的方法。