我正在开发基于GWT的图形用户界面。我根本不是GUI和GWT的专家。这样,我正在做的是在while循环中创建一个StackLayoutPanel,如下所示:
while(mainIterator.hasNext()){
stackLayoutPanel.add(internalVerticalPanel, sZone, 30);
}
我省略了internalVerticalPanel对象的信息,虽然基本上是标签和HorizontalPanels。
但是,此internalVerticalPanel并不总是包含相同数量的对象,因此,每次迭代的大小都不同。然后,在显示信息时,我注意到StackPanel的总大小除以包含的标题或元素的数量。我想要做的是确定每个标头的大小,以便调整VerticalPanel内容的大小。我的意思是,我希望每个元素都具有与内容相关联的大小,而不是具有相同大小的元素。可能吗?如果是这样,怎么样?
编辑 :我已经执行了回复中给出的建议,但这不是解决方案。正如您在附图中看到的那样,更改的是标题的大小,但我想保留标题并修改内部内容的大小。现在,internalVerticalPanel隐藏在标题后面。
在以下两个方面,你可以看到两个例子,一个是要显示的数据,另一个是固定好的,同时在第二个例子中没有数据和一个很大的空白空间。我想根据要绘制的可用数据调整这些空间的大小。
提前致谢
答案 0 :(得分:0)
我没有在运行时检查过这个,但在我看来你可以做到
int myDesiredHeight = 0;
while(mainIterator.hasNext()){
stackLayoutPanel.add(internalVerticalPanel, sZone, 30);
myDesiredHeight += 30;
}
stackLayoutPanel.setHeight(myDesiredHeight + "px");
这样,您可以调整stacklayoutpanel的大小以容纳内容。 关于标题的不同大小,我认为这种类型的面板接受自定义标题或安全html,因此您应该能够非常轻松地设置标题样式,例如使用此方法(StackLayoutPanel,GWT 2.7中的第168行):
public void add(final Widget widget, SafeHtml header, double headerSize) {...}
编辑:您可以尝试以下方式:
StackLayoutPanel stackLayoutPanel = new StackLayoutPanel(Style.Unit.PX);
VerticalPanel myWidget1 = new VerticalPanel();
SafeHtml myHeader1 = SafeHtmlUtils.fromSafeConstant("My header 1 title");
VerticalPanel myWidget2 = new VerticalPanel();
SafeHtml myHeader2 = SafeHtmlUtils.fromSafeConstant("My header 2 title");
stackLayoutPanel.add(myWidget1,myHeader1,100);
stackLayoutPanel.add(myWidget2,myHeader2,50);
// and so on