如果你是其他几个页面,这种方法是正确的
然后,您可以动态添加下一页(也如下所述))
但是,如果您只有一个包含动态内容的下一页,则应该能够在 onEnterPage()
方法中创建该内容。
public void createControl(Composite parent)
{
//
// create the composite to hold the widgets
//
this.composite = new Composite(parent, SWT.NONE);
//
// create the desired layout for this wizard page
//
GridLayout layout = new GridLayout();
layout.numColumns = 4;
this.composite.setLayout(layout);
// set the composite as the control for this page
setControl(this.composite);
}
void onEnterPage()
{
final MacroModel model = ((MacroWizard) getWizard()).model;
String selectedKey = model.selectedKey;
String[] attrs = (String[]) model.macroMap.get(selectedKey);
for (int i = 0; i < attrs.length; i++)
{
String attr = attrs[i];
Label label = new Label(this.composite, SWT.NONE);
label.setText(attr + ":");
new Text(this.composite, SWT.NONE);
}
pack();
}
如日食角文章创建 JFace Wizards 所示:
我们可以通过覆盖任何向导页的 getNextPage 方法来更改向导页的顺序。在离开页面之前,我们将用户选择的值保存在模型中。在我们的示例中,根据旅行的选择,用户接下来将看到包含航班的页面或用于乘车旅行的页面。
public IWizardPage getNextPage(){
saveDataToModel();
if (planeButton.getSelection()) {
PlanePage page = ((HolidayWizard)getWizard()).planePage;
page.onEnterPage();
return page;
}
// Returns the next page depending on the selected button
if (carButton.getSelection()) {
return ((HolidayWizard)getWizard()).carPage;
}
return null;
}
我们为 PlanePage
onEnterPage()
定义了一个执行此初始化的方法,并在移动到 PlanePage
时调用此方法,即在第一页的 getNextPage()
方法中。