我想使用exportWizard扩展点作为eclipse插件。我在弄清楚一个简单的filedialog向导页面应该是什么样子时遇到了一些困难。
public class ExportWizardPage extends WizardPage {
private FileDialog fileDialog=null;
protected ExportWizardPage(String pageName) {
super(pageName);
}
@Override
public void createControl(Composite parent) {
fileDialog = new FileDialog(parent.getShell(), SWT.SAVE);
fileDialog.setFilterExtensions(new String[] { "*.bm" });
}
}
我正在尝试它,如上所述,并使用FileDialog选择目标文件。基本上它工作,对话框打开,我得到文件的名称,但一旦对话关闭,我得到一个例外。
org.eclipse.core.runtime.AssertionFailedException: null argument:
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73)
at org.eclipse.jface.wizard.Wizard.createPageControls(Wizard.java:178)
我认为我错误地使用了这个Wizard / WizardPage机制,但是我真的找不到一个简单的例子来向我展示一些应该是什么样子。
答案 0 :(得分:3)
您的向导页面不包含任何控件。您应该创建一个复合,然后将所有控件添加到它(而不是直接parent
)。也绝对需要调用setControl(..)
。看起来应该是这样的:
@Override
public void createControl(Composite parent) {
Composite content = new Composite(parent, SWT.NONE);
// add all the controls to your wizard page here with 'content' as parent
FileDialog fileDialog = new FileDialog(parent.getShell(), SWT.SAVE);
fileDialog.setFilterExtensions(new String[] { "*.bm" });
setControl(content);
}