Java 使用向导和ScrolledForm(jface和FormsAPI)
我是eclipse插件SWT开发的新手。我正在尝试创建一个包含大量文本字段和组合框的向导页面。为了获得更好的外观和感觉,我正在尝试使用Java 使用向导和ScrolledForm(jface和FormsAPI),java,eclipse,swt,eclipse-rcp,jface,Java,Eclipse,Swt,Eclipse Rcp,Jface,我是eclipse插件SWT开发的新手。我正在尝试创建一个包含大量文本字段和组合框的向导页面。为了获得更好的外观和感觉,我正在尝试使用FormToolkit创建组件,并将它们添加到scrolled表单中。但在运行时,向导页面上不会呈现任何内容,也不会出现错误。 问题: 是否可以在向导页面中滚动容器 我们可以混合使用JFace和forms api吗? (删除不需要的代码) 以下是向导页面代码: 公共类ContactWizardPage扩展了WizardPage{ 专用静态整数计数器; 私人形式 p
FormToolkit
创建组件,并将它们添加到scrolled表单中。但在运行时,向导页面上不会呈现任何内容,也不会出现错误。
问题:
是否可以在向导页面中滚动容器
我们可以混合使用JFace和forms api吗?
(删除不需要的代码)
以下是向导页面代码:
公共类ContactWizardPage扩展了WizardPage{
专用静态整数计数器;
私人形式
public ContactWizardPage() {
super("New Contact Wizard" + ++counter, "New Contact Wizard" + counter, null);
setMessage("Please enter contact info." + counter);
}
public void createControl(final Composite parent) {
createControlWithoutToolkit(parent);
// commenting out toolkit code
//createControlWithToolkit(父级);
}
}
以下是向导代码:
public class SampleNewWizard extends Wizard implements INewWizard {
public SampleNewWizard() {
super();
setNeedsProgressMonitor(true);
}
@Override
public IWizardPage getNextPage(IWizardPage page) {
return super.getNextPage(page);
}
public void addPages() {
addPage(new ContactWizardPage());
addPage(new ContactWizardPage());
addPage(new ContactWizardPage());
addPage(new ContactWizardPage());
}
public boolean performFinish() {
return true;
}
public void init(IWorkbench workbench, IStructuredSelection selection) {
}
}
使用此代码,向导的第一页显示良好,但第二页从未正确呈现:(
以下是截图:
第一页:
第二页:
这条线
parent.getShell().setSize(240, 320);
正在打乱某些东西(这不是您应该在向导页面中执行的操作,因为向导
类处理大小调整)。在这里进行测试,如果没有它,它可以正常工作(我理解您的问题)。确保在向导打开时不处理FormToolKit。绘制事件需要在createControl()之后使用toolkit已经完成了
我的解决方案是在向导中创建和处置FormToolKit:
@Override
public void createPageControls(Composite pageContainer) {
toolkit = new FormToolkit(pageContainer.getDisplay());
super.createPageControls(pageContainer);
}
@Override
public void dispose() {
super.dispose();
if (toolkit != null) {
try { toolkit.dispose(); } catch (Exception e) {}
}
}
public FormToolkit getToolkit() {
return toolkit;
}
在向导页面中,您可以使用((FormWizard)getWizard).getToolkit()获取对向导的表单工具包的引用
@Override
public void createControl(Composite parent) {
FormToolkit toolkit = ((FormWizard) getWizard()).getToolkit();
...
希望这有助于…我在Eclipse代码的向导页面中看到了FormToolkit
的几种用法。FormToolkit
只是在内部使用jface,所以混合使用它们应该不会有问题。如果您添加一些代码,我们可能会看到错误。感谢您立即回复greg。这是我在其中一个向导中试用的代码教程还不走运:(即使删除了“parent.getShell().setSize(240320);”行,它仍然无法正确显示第二页。但是如果我不使用FormToolkit并使用new创建组件,那么它可能与从new wizard运行有关,我使用的是WizardDialog
@Override
public void createControl(Composite parent) {
FormToolkit toolkit = ((FormWizard) getWizard()).getToolkit();
...