在创建页面后的库代码中,将发生控件属性的断言检查:
public void createPageControls(Composite pageContainer) {
// the default behavior is to create all the pages controls
for (int i = 0; i < pages.size(); i++) {
IWizardPage page = (IWizardPage) pages.get(i);
page.createControl(pageContainer);
// page is responsible for ensuring the created control is
// accessable
// via getControl.
Assert.isNotNull(page.getControl());
}
}
(最后一行)
因此,在实施WizardPage#createControl
时,应该为control
添加一些内容。
在Vogella的样本中,他创建了中间Composite
容器并使用它:http://www.vogella.com/tutorials/EclipseWizards/article.html#wizards_example
但我可以使用createContol
的{{1}}参数吗?
更新
如果重新定义parent
课程并一直使用它会怎样?
WizardPage
这样的决定有哪些缺点?
答案 0 :(得分:3)
在WizardPage.createControl
中,您必须创建某种Control
- 通常是Composite
,您必须致电WizardPage.setControl(control)
告诉WizardPage
哪个是顶级控件。所以通常是这样的:
@Override
public void createControl(final Composite parent)
{
final Composite composite = new Composite(parent, SWT.NULL);
...
setControl(composite);
}