在GXT中,我有一个控件,底部组件中添加了一个重要的面板,基本上是这样的:
public class SamplePanel extends ContentPanel {
ContentPanel panel = new ContentPanel();
public SamplePanel() {
setBottomComponent(panel);
}
public void setVisible(boolean isVisible) {
panel.setVisible(isVisible);
}
该面板被设置为“底部组件”,因为它需要保持在窗口小部件的底部并且始终可以查看。
问题是,虽然面板的可见性正确切换,但“底部组件”区域不会调整大小以适应底部区域的新尺寸。
但是,我注意到当我用鼠标手动更改小部件的大小时,底部区域会调整大小。
有没有办法以编程方式强制重绘/重新绘制/重新布局......有什么方法可以更改底部组件以反映其内容的新大小?
我已经尝试了所有这些并且它们不起作用:
public void setVisibility(boolean isVisible) {
panel.setVisible(isVisible);
doLayout(true);
recalculate();
repaint();
}
由于
答案 0 :(得分:8)
在最后一个gxt中你可以做到。
this.layout(true);
否则您可以触发Events.Resize事件。
答案 1 :(得分:1)
我不知道GXT,但在GWT中,我会在我的面板上使用force()
或forceLayout()
方法之一。也许有一个类似的API来做到这一点!
HTH。
答案 2 :(得分:1)
您是否尝试过使用setLayoutOnChange()
的<{1}}方法?
答案 3 :(得分:0)
我建议看看这个: http://davidmaddison.blogspot.com/2008/12/gwt-rendering-process.html
你可以尝试做的是将addListeners添加到Panel并尝试调用panel.layout()
答案 4 :(得分:0)
This post声称一旦面板渲染后顶部和底部组件不参与布局,并建议手动解决方法(使用RowLayout)或手动设置面板的大小。
考虑从父级查找大小并调用onResize(width,height)