私のSWTアプリケーションでは、SWTシェル内に特定のコンポーネントがあります。
次に、表示ウィンドウのサイズに応じて、このコンポーネントのサイズを自動変更するにはどうすればよいですか。
Display display = new Display();
Shell shell = new Shell(display);
Group outerGroup,lowerGroup;
Text text;
public test1() {
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns=1;
Shell.setLayout(gridLayout);
outerGroup = new Group(Shell, SWT.NONE);
GridData data = new GridData(1000,400);
data.verticalSpan = 2;
outerGroup.setLayoutData(data);
gridLayout = new GridLayout();
gridLayout.numColumns=2;
gridLayout.makeColumnsEqualWidth=true;
outerGroup.setLayout(gridLayout);
...
}
つまり、ウィンドウのサイズを小さくすると、ウィンドウ内のコンポーネントがそれに応じて表示されるはずです。
レイアウトを使用していないように思われます。
レイアウトの全体的な概念により、サイズ変更について心配する必要がなくなります。レイアウトは、そのすべてのコンポーネントのサイズを処理します。
レイアウトに関するEclipseの記事を読むことをお勧めします
コードは簡単に修正できます。個々のコンポーネントのサイズを設定しないでください。レイアウトによってサイズが決まります。ウィンドウに事前定義されたサイズを設定する場合は、シェルのサイズを設定します。
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
Shell.setLayout(new GridLayout(1, false));
Group outerGroup = new Group(Shell, SWT.NONE);
// Tell the group to stretch in all directions
outerGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
outerGroup.setLayout(new GridLayout(2, true));
outerGroup.setText("Group");
Button left = new Button(outerGroup, SWT.Push);
left.setText("Left");
// Tell the button to stretch in all directions
left.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Button right = new Button(outerGroup, SWT.Push);
right.setText("Right");
// Tell the button to stretch in all directions
right.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Shell.setSize(1000,400);
Shell.open();
while (!Shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
サイズ変更前:
サイズ変更後: