如何动态添加JFace WizardPage

时间:2014-01-26 20:57:05

标签: java jface wizard

我目前正在尝试使用JFace向导为应用程序实现“导入向导”。

基本上我必须根据用户的输入“及时”添加下一页,因为向导中的每个“步骤”都取决于之前的步骤。

因此,在WizardImport的构造函数中,我将添加第一页,使用:

    addPage(new WizardImportSourcePage(data));

在这个页面(WizardImportSourcePage)中,我想添加下一页,具体取决于所选择的来源,例如:

    btnCsv.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent arg0) {

            data.getWizard().addPage(new WizardImportSourcePage(data));

            setPageComplete(true);

        }
    });

正如您所看到的,所有这些都发生在相应的Listener中。不幸的是,这不起作用。向导缺少“下一步”按钮,但仅显示“完成”按钮,因为在实际按下按钮之前,它不知道下一页的任何内容。我已经尝试调用updateButtons(),但它没有改变任何内容。

那么,有什么建议如何使它工作?动态构建向导页面的正确方法是什么?大多数教程似乎都假设页面是在开头创建的,只是使用getNextPage()更改了排序。

1 个答案:

答案 0 :(得分:0)

在扩展Wizard的代码中,您可以覆盖

public IWizardPage getNextPage(IWizardPage page)

可让您根据当前向导页面决定接下来要返回的页面(还有getPreviousPage