6

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

谢谢

4

5 回答 5

8

在最后一个 gxt 你可以做。

this.layout(true);

否则,您可以触发 Events.Resize 事件。

于 2012-04-05T14:13:50.253 回答
1

我不了解 GXT,但在 GWT 中,我会使用面板上的force()or方法之一。forceLayout()也许有一个类似的 API 可以做到这一点!

HTH。

于 2011-01-25T12:53:06.217 回答
1

您是否尝试过使用 的setLayoutOnChange()方法ConentPanel

于 2012-04-11T16:47:06.057 回答
0

这篇文章声称,一旦面板被渲染,顶部和底部组件将不参与布局,并建议手动解决方法(使用 RowLayout)或手动设置面板的大小。

考虑从父母那里找到尺寸并调用 onResize(width, height)

于 2011-04-18T00:05:32.650 回答
0

我建议看看这个: http ://davidmaddison.blogspot.com/2008/12/gwt-rendering-process.html

你可以尝试做的是向面板添加监听器并尝试在那里调用 panel.layout()

于 2011-01-28T00:32:20.280 回答