我有TitleAreaDialog可以有n个Tree,每个树都有自己的复合。如果我只有2棵树,那么对话框看起来很棒,但是如果树的数量增加,树的内容就会被截断。
我想我错过了一些小事。
以下是代码:
apply plugin X
}
答案 0 :(得分:0)
你没有做任何事情来处理显示器太大的对话框。您必须使用类似ScrolledComposite
的内容来处理此问题:
@Override
protected Control createDialogArea(final Composite parent) {
Composite area = (Composite) super.createDialogArea(parent);
parent.getShell().setText(DIALOG_TITLE);
ScrolledComposite scrolled = new ScrolledComposite(area, SWT.V_SCROLL | SWT.H_SCROLL);
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
data.heightHint = 500;
scrolled.setLayoutData(data);
scrolled.setExpandHorizontal(true);
scrolled.setExpandVertical(true);
createMapperComposite(scrolled);
return area;
}
private void createMapperComposite(ScrolledComposite composite) {
Composite main = new Composite(composite, SWT.NONE);
main.setLayout(new GridLayout());
main.setLayoutData(new GridData(GridData.FILL_BOTH));
treeMapper(main);
composite.setContent(main);
composite.setMinSize(main.computeSize(SWT.DEFAULT, SWT.DEFAULT));
}
注意:您必须为对话框选择一个高度(请参阅data.heightHint = 500
)才能使其正常工作。
您的代码名为super.createDialogArea
三次次 - 必须只调用一次。您还返回了this.dialogArea
- 您应该返回super.createDialogArea
返回的值。