GWT StackLayoutPanel:动态和自动高度

jua*_*cks 5 java height gwt stack scroll

我正在使用StackLayoutPanel来显示对话的堆叠电子邮件,其中标题是发件人,孩子是电子邮件的正文.对于动态特性,我只能估计代码中堆栈的高度.为了估计身体的高度,我可以得到客户的窗口宽度,然后大致猜测身体占据的线数.但这很费力,可能是错的.

我的问题是:对于StackLayoutPanel,对于GWT API 2.2,有没有办法知道并自动设置当前显示的子节点(加上其标题和其他标题)的显示高度?

我恐怕不是这样,我已经尝试了其他的东西,但是,它们也失败了.我试过了:

  1. 将StackLayoutPanel放在ScrollPanel中:

    • 如果我没有在代码中设置堆栈的大小,神秘地我只能看到第一个堆栈的标题,而不仅仅是它的主体,也没有其他标题.
    • 如果我确实设置了它,那么我就有身体高度估计的问题.
  2. 不在ScrollPanel内部:堆栈自动获得剩余窗口空间的大小,但是如果标头太多,则它们会重叠并相互叠加.

此外,似乎StackLayoutPanel的默认行为是在分配的空间的最末端显示其余的标题,而不是在before的标题的子节点之后.有可能改变这个吗?

对此的帮助将非常感激.

//我知道类似的问题是这个,但我想我会扩展它.

Ash*_*mas 2

你是对的,你确实扩展了上一个问题,答案很简单: stackLayoutPanel.setHeight((40*numChildren + 200)+"px");

200px 的主体大小取决于内容,并且足够大,因此 StackLayoutPanel 可能不会为您裁剪。

我认为您将使用 StackLayoutPanel 的壁橱是使用固定的主体宽度并在主体内使用 ScrollPanel (而不是 SP 内的 SLP)。这样所有的邮件都可以显示ScrollPanel中的所有内容。

由于这是一个妥协,替代方案是实现您自己的小部件。我可能会使用 VerticalPanel 作为底层小部件,只隐藏和显示 div(同时保持标题始终可见)