我有一个GridLayout
内部 a Composite
,里面有两列。我想要列宽 75% 和 25% 的Shell
宽度。怎么做?
问问题
5946 次
1 回答
7
对,给你:使用这些GridData#widthHint
值来强制 s 的某个宽度Composite
。根据 的宽度计算宽度Shell
:
public static void main(String[] args)
{
Display display = Display.getDefault();
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout(2, false));
Composite left = new Composite(shell, SWT.BORDER);
Composite right = new Composite(shell, SWT.BORDER);
final GridData leftData = new GridData(SWT.FILL, SWT.FILL, true, true);
final GridData rightData = new GridData(SWT.FILL, SWT.FILL, true, true);
left.setLayoutData(leftData);
right.setLayoutData(rightData);
shell.addListener(SWT.Resize, new Listener()
{
@Override
public void handleEvent(Event arg0)
{
Point size = shell.getSize();
leftData.widthHint = (int) (size.x * 0.75);
rightData.widthHint = size.x - leftData.widthHint;
System.out.println(leftData.widthHint + " + " + rightData.widthHint + " = " + size.x);
}
});
shell.pack();
shell.open();
shell.layout();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
启动后:
调整大小后:
于 2013-10-13T20:21:21.117 回答