我在 eclipse rcp 中的对话框中遇到了一些问题。我希望有一个对话框,它向我显示一个 MasterDetailBlock 来管理主部分的表中显示的任意数量的实体,其相应的 DetailPages 显示在详细部分中。到目前为止,这是使用视图完成的,但非模态对话框似乎更适合于此。
起初,我尝试了一种天真的方式,即从视图中获取代码并将其放入对话框中,由于视图和对话框创建之间的差异而进行了一些修改。但是,大多数控件都丢失了。在 Google、eclipse 论坛和 Stackoverflow 上的搜索并没有带来解决方案。在检查了这些站点的解决方案后,我试图通过使用调试器单步执行代码来了解发生了什么,但这也对我没有帮助。
以下代码应显示一个对话框,其中包含应显示按钮的部分。但是,它不会:
protected Control createDialogArea(Composite parent) {
parent.setLayout(new GridLayout(1, true));
Section section = toolkit.createSection(parent, ExpandableComposite.EXPANDED | ExpandableComposite.TITLE_BAR);
section.setLayout(new GridLayout());
section.setText("Section");
section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Button test = toolkit.createButton(section, "test", SWT.PUSH);
test.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
test.setVisible(true);
section.computeSize(SWT.DEFAULT, SWT.DEFAULT);
return parent;
}
结果是:
但是,由于 MasterDetailBlock 需要一个表单,我也将提供此代码:
protected Control createDialogArea(Composite parent) {
parent.setLayout(new GridLayout(1, true));
form = new ScrolledForm(parent);
form.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
form.getBody().setLayout(new FillLayout());
Composite formComposite = toolkit.createComposite(form.getBody());
formComposite.setLayout(new GridLayout(1,true));
Section section = toolkit.createSection(formComposite, ExpandableComposite.EXPANDED | ExpandableComposite.TITLE_BAR);
section.setLayout(new GridLayout());
section.setText("Section");
section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Button test = toolkit.createButton(section, "test", SWT.PUSH);
test.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
test.setVisible(true);
section.computeSize(SWT.DEFAULT, SWT.DEFAULT);
return parent;
}
只需通过向对话框添加一个表单进行轻微修改,所有内容都会在表单上进行。但是,结果如下所示:
恐怕我在这里遗漏了一些明显的东西。正如我所说,搜索并没有带来任何启发,单步执行代码也无济于事。我最后的手段“尝试一些东西看看会发生什么并试图理解它”并没有太大帮助,因为结果与已经发布的结果并没有什么不同。
那么,我错过了什么吗?(我认为是这样)如果您可以向我提供一个链接以向我展示问题所在(或者您的经验中的任何内容),我会对此表示赞赏。
感谢您的帮助。