如何在Ext GWT(GXT)中强制重绘/重新布局?

时间:2011-01-24 20:42:54

标签: gwt gxt gwt-ext

在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();
    }

由于

5 个答案:

答案 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)