我有一个带有单页的eclipse JFace向导(让我们称之为page1
),使用mainWizard
将其添加到addPage(page1)
。
我希望有第二页(page2
),但这只能根据page1
确定的值创建(因此无法添加到mainWizard
)
当我按下下一个按钮时,我可以通过page1
添加此功能吗?
编辑:
目前,我已在page1
中创建新页面,然后按以下方式覆盖getNextPage()
@Override
public IWizardPage getNextPage() {
if (page2 != null) {
return page2;
}
System.err.println("page not populated");
return null;
}
虽然我没有收到“未填充页面”的消息,但当我按下“NullPointerException
WizardDialog.setWizard
时,我会点击{{1}}。
答案 0 :(得分:5)
org.eclipse.jface.wizard.Wizard
具有在现有步骤的末尾动态添加页面所需的全部内容。如果符合条件,您可以通过覆盖getNextPage
来返回新页面来执行此操作:
@Override
public IWizardPage getNextPage() {
IWizardPage nextPage = super.getNextPage(page);
if (nextPage == null) {
if (userInputRequiresMorePage){
// The user input is such that we need an additional page to append to the wizard.
IWizardPage nextPage = new MyAdditionalPage();
}
}
return nextPage;
}
如果您的向导仅以一页开头,则默认情况下不会显示“后退”和“下一步”按钮。由于您可能需要更多步骤,因此您需要显示它们。您可以通过使用API
设置正确的标志来实现public void org.eclipse.jface.wizard.Wizard.setForcePreviousAndNextButtons(boolean b)
答案 1 :(得分:3)
编写JFace向导时的典型方法是扩展Wizard
类并在addPages()
方法中添加页面。虽然这对许多情况来说都很方便,但您可以选择直接实现IWizard
界面,并在页面的创建和排序方面拥有所需的所有控制权。
答案 2 :(得分:1)
您可以创建第二个页面,其中只有一个复合词,并在向导addPage
中为其调用addPages
。
在第二页中覆盖setVisible(boolean)
方法,并在页面可见时创建所需的控件。