SWT Composite需要3.6.1中的pack()

时间:2010-09-28 18:48:00

标签: java swing eclipse-plugin swt

我的向导在Eclipse 3.6.1中无法正确呈现。这让我想知道:什么时候必须使用Composite.pack()?一些SWT示例有它,有些则没有。

我的向导页面呈现方式取决于目标平台。如果我在3.5.2中运行我的插件,一旦打开它们就会正确呈现。但是在3.6.1中,它们的第一个内容区域是空白的。页面使用GridLayout。

如果我使用鼠标调整向导对话框的大小,它立即渲染就好了。 如果我在传递给DialogPage.setControl()的控件上调用pack(),页面呈现,但它不够宽。随后的调整大小会修复宽度。

有人能说些什么吗?什么时候使用pack()有一般规则?

(标记为Swing因为专家可能有答案以及SWT者。)

1 个答案:

答案 0 :(得分:2)

pack()将目标的大小设置为其默认大小。它通常在Shell上使用,因为父级的Layout通常负责为其管理的小部件调用setSize()。您可能最好在Layout的父级上明确设置一些FillLayout(例如Composite),而不是致电pack()