Подход правильный, если у вас есть несколько других страниц, которые
- полностью отличается друг от друга
- зависит от предыдущих выборов, сделанных на предыдущей странице
Затем вы можете динамически добавить следующую страницу (также как , описанное здесь )
Но если у вас есть только следующая страница с динамическим контентом, вы сможете создать этот контент методом 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 :
Мы можем изменить порядок страниц мастера, переписав метод 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()
для первой страницы .