如何动态调整TitleAreaDialog中控件的大小

时间:2016-12-12 17:03:04

标签: eclipse-rcp jface

我有TitleAreaDialog可以有n个Tree,每个树都有自己的复合。如果我只有2棵树,那么对话框看起来很棒,但是如果树的数量增加,树的内容就会被截断。

我想我错过了一些小事。

以下是代码:

apply plugin X

}

1 个答案:

答案 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返回的值。