Layout 如何在两个复合材料中对齐不同的元素?

Layout 如何在两个复合材料中对齐不同的元素?,layout,swt,composite,java-5,Layout,Swt,Composite,Java 5,我尝试制作以下小部件: 为此,我为组创建了一个组合(1列),为id和密码创建了一个组合(2列)(标签和文本) 然后,我为包含3列的3个字段(复选框、标签和文本)创建一个组合 但是,最后一行没有与id和密码对齐,因为我想将“重试尝试”与文本字段垂直对齐: 我的代码是: Composite sqlComposite=新组合(父项,SWT.NONE); setLayout(新的GridLayout(1,false)); setLayoutData(新的GridData(SWT.FILL,SWT.F

我尝试制作以下小部件:

为此,我为组创建了一个组合(1列),为id和密码创建了一个组合(2列)(标签和文本)

然后,我为包含3列的3个字段(复选框、标签和文本)创建一个组合

但是,最后一行没有与id和密码对齐,因为我想将“重试尝试”与文本字段垂直对齐:

我的代码是:

Composite sqlComposite=新组合(父项,SWT.NONE);
setLayout(新的GridLayout(1,false));
setLayoutData(新的GridData(SWT.FILL,SWT.FILL,true,false));
组sqlGoup=新组(sqlComposite,SWT.NONE);
group.setLayout(新的GridLayout(1,false));
setText(“sql连接”);
复合sql2Composite=新复合(sqlGoup,SWT.NONE);
sql2Composite.setLayout(新的GridLayout(2,false));
sql2Composite.setLayoutData(新的GridData(SWT.FILL,SWT.FILL,true,false));
标签=新标签(sql2Composite,SWT.NONE);
label.setText(“Id”);
Text textBoxID=新文本(sql2Composite,SWT.BORDER);
setLayoutData(新的GridData(SWT.FILL、SWT.CENTER、true、false));
标签=新标签(sql2Composite,SWT.NONE);
label.setText(“密码”);
Text textBoxPass=新文本(sql2Composite,SWT.BORDER);
setLayoutData(新网格数据(SWT.FILL、SWT.CENTER、true、false));
复合sqlButtonsComposite=新复合(sqlGoup,SWT.NONE);
setLayout(新的GridLayout(3,false));
setLayoutData(新的GridData(SWT.NONE,SWT.NONE,false,false));
_encryptCheckButton=新按钮(sqlButtonsComposite,SWT.CHECK);
_encryptCheckButton.setText(“加密”);
_encryptCheckButton.setLayoutData(新网格数据(SWT.start、SWT.CENTER、true、false));
Label labelSpinner=新标签(sqlButtonsComposite,SWT.NONE);
labelSpinner.setText(“RetryAttempts”);
_retryAttemptsSpinner=新微调器(sqlButtonsComposite,SWT.BORDER);
_setLayoutData(新的GridData(SWT.beging、SWT.CENTER、true、false));
_retryAttemptsSpinner.setMinimum(最小增量微调器);
_retryAttemptsSpinner.setMaximum(最大增量微调器);
_retryAttemptsSpinner.setSelection(默认微调器编号);
_retryAttemptsSpinner.setIncrement(增量微调器编号);
因此,我的问题是:如何对齐id、密码和名为encrypt的复选框?


谢谢

使用两个复合材料无法轻松对齐。因此,使用一个包含3列的组合,并使文本控件跨越两列:

Composite sql2Composite=新的组合(sqlGoup,SWT.NONE);
//3列
sql2Composite.setLayout(新的GridLayout(3,false));
sql2Composite.setLayoutData(新的GridData(SWT.FILL,SWT.FILL,true,false));
标签=新标签(sql2Composite,SWT.NONE);
label.setText(“Id”);
Text textBoxID=新文本(sql2Composite,SWT.BORDER);
//跨2根柱子
setLayoutData(新的GridData(SWT.FILL,SWT.CENTER,true,false,2,1));
标签=新标签(sql2Composite,SWT.NONE);
label.setText(“密码”);
Text textBoxPass=新文本(sql2Composite,SWT.BORDER);
//跨2根柱子
setLayoutData(新的GridData(SWT.FILL,SWT.CENTER,true,false,2,1));
//无二次复合
_encryptCheckButton=新按钮(sql2Composite,SWT.CHECK);
_encryptCheckButton.setText(“加密”);
//不要占用额外的空间
_encryptCheckButton.setLayoutData(新网格数据(SWT.start、SWT.CENTER、false、false));
标签标签pinner=新标签(sql2Composite,SWT.NONE);
labelSpinner.setText(“RetryAttempts”);
_retryAttemptsSpinner=新微调器(sql2Composite,SWT.BORDER);
//不要占用额外的空间
_setLayoutData(新的GridData(SWT.beging、SWT.CENTER、false、false));

我在上面添加了一些需要更改的注释

使用两个组合无法轻松对齐。因此,使用一个包含3列的组合,并使文本控件跨越两列:

Composite sql2Composite=新的组合(sqlGoup,SWT.NONE);
//3列
sql2Composite.setLayout(新的GridLayout(3,false));
sql2Composite.setLayoutData(新的GridData(SWT.FILL,SWT.FILL,true,false));
标签=新标签(sql2Composite,SWT.NONE);
label.setText(“Id”);
Text textBoxID=新文本(sql2Composite,SWT.BORDER);
//跨2根柱子
setLayoutData(新的GridData(SWT.FILL,SWT.CENTER,true,false,2,1));
标签=新标签(sql2Composite,SWT.NONE);
label.setText(“密码”);
Text textBoxPass=新文本(sql2Composite,SWT.BORDER);
//跨2根柱子
setLayoutData(新的GridData(SWT.FILL,SWT.CENTER,true,false,2,1));
//无二次复合
_encryptCheckButton=新按钮(sql2Composite,SWT.CHECK);
_encryptCheckButton.setText(“加密”);
//不要占用额外的空间
_encryptCheckButton.setLayoutData(新网格数据(SWT.start、SWT.CENTER、false、false));
标签标签pinner=新标签(sql2Composite,SWT.NONE);
labelSpinner.setText(“RetryAttempts”);
_retryAttemptsSpinner=新微调器(sql2Composite,SWT.BORDER);
//不要占用额外的空间
_setLayoutData(新的GridData(SWT.beging、SWT.CENTER、false、false));

我在上面添加了一些需要更改的评论

正在运行,非常感谢您的帮助!!我现在明白我的问题了,它起作用了,非常感谢你的帮助!!我现在明白我的问题了