在创建页面后的库代码中,将进行控件属性的断言检查:

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

但是我可以只使用createContolparent参数吗?

更新

如果重新定义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/

10-14 05:39