Java 调整对话框大小时如何调整对话框中的子对象

Java 调整对话框大小时如何调整对话框中的子对象,java,swt,eclipse-rcp,jface,Java,Swt,Eclipse Rcp,Jface,我在一个对话框中有一个合成图。 我想调整对话框的大小,当对话框调整大小时,我想相应地更新组合 如何设置组合的大小 下面是我的代码片段: protected Control createDialogArea(Composite parent) { Composite container = (Composite) super.createDialogArea(parent); final GridLayout gridLayout = new GridLayout(); container.set

我在一个对话框中有一个合成图。 我想调整对话框的大小,当对话框调整大小时,我想相应地更新组合

如何设置组合的大小

下面是我的代码片段:

protected Control createDialogArea(Composite parent) {
Composite container = (Composite) super.createDialogArea(parent);
final GridLayout gridLayout = new GridLayout();
container.setLayout(gridLayout);

final Composite composite = new Composite(container, SWT.NONE);
final GridData gridData = new GridData(GridData.FILL, GridData.FILL, false, 
                                                                 false);
gridData.heightHint = 300;
gridData.widthHint = 600;
composite.setLayoutData(gridData);
我在这张合成图里面有一个TableViewer

请让我知道如何处理此问题。

请确保在创建的每个合成上调用setLayout

如果将GridLayout用于组合的布局,请使用GridData,它指定SWT.FILL和“抓取额外空间”:

 control.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
将使控件使用所有水平空间

 control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
将使控件在两个方向上占用所有可用空间

注意:必须为每个控件创建一个新的GridData-不要尝试在控件之间共享它们,这同样适用于布局

要首先使对话框可调整大小,请执行以下操作:

@Override
protected boolean isResizable()
{
  return true;
}