在创建页面后的库代码中,将进行控件属性的断言检查:
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
的parent
参数吗?更新
如果重新定义
WizardPage
类并一直使用该怎么办?public abstract class WizardPageEx extends WizardPage {
public WizardPageEx(String pageName, String title, ImageDescriptor titleImage) {
super(pageName, title, titleImage);
}
public WizardPageEx(String pageName) {
super(pageName);
}
@Override
final public void createControl(Composite parent) {
Composite control = new Composite(parent, SWT.NONE);
createControlEx(control);
setControl(control);
}
abstract public void createControlEx(Composite control);
}
这样的决定有什么弊端?
最佳答案
在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);
}
关于java - 如何正确创建WizardPage(Eclipse平台),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21239860/