我的向导在 Eclipse 3.6.1 中无法正确呈现。这让我想知道:什么时候必须使用 Composite.pack()?有些 SWT 示例有它,有些则没有。
我的向导页面的呈现方式取决于目标平台。如果我在 3.5.2 中运行插件,它们一打开就会正确渲染。但在 3.6.1 中,它们的内容区域在第一个时是空白的。页面使用 GridLayout。
如果我使用鼠标调整向导对话框的大小,它会立即呈现得很好。 如果我在传递给 DialogPage.setControl() 的控件上调用 pack(),页面将呈现,但不够宽。随后的调整大小会修复宽度。
有人可以透露一些信息吗?何时使用 pack() 有一般规则吗?
(用 Swing 标记是因为那里的专家可能和 SWTers 一样有答案。)
最佳答案
pack()
将目标的大小设置为其默认大小。它通常用在 Shell
上,因为通常父级的 Layout
负责为其管理的小部件调用 setSize()
。您最好在 Composite
的父级上显式设置一些 Layout
(例如 FillLayout
),而不是调用 pack()
.
关于java - SWT Composite 在 3.6.1 中需要 pack(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3816028/