java - SWT Composite 在 3.6.1 中需要 pack()

标签 java swing eclipse-plugin swt

我的向导在 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/

相关文章:

java - Spark ml 和 PMML 导出

java - TestNG 注解-案例跳过

eclipse - Subversive 和 Subclipse 同时在 Eclipse 中如何禁用其中之一?

eclipse - 在 Eclipse Package Explorer 中处理文件的拖放

java - 如何捕获 Beanshell 的输出

java - 我应该在这里测试什么?

Java JTable - 透明与 Nimbus/System L&F

java - 在 .NET Form/Visual Studio 编辑器中查看 Java GUI?

java - 使用 MouseAdapter 移动光标时获取光标位置

java - 如何从使用 Maven 的 Eclipse 项目中检索类路径字符串?