Eclipse SWT布局创建
我对使用SWT创建布局非常陌生。这就是我要创造的 这是我迄今为止的尝试: 代码:Eclipse SWT布局创建,eclipse,swt,Eclipse,Swt,我对使用SWT创建布局非常陌生。这就是我要创造的 这是我迄今为止的尝试: 代码: private void createContents(final Shell shell) { shell.setLayout(new GridLayout(2,true)); /// Side Panel Composite sideComposite = new Composite(shell, SWT.NONE); sideComposite.setLayout(
private void createContents(final Shell shell) {
shell.setLayout(new GridLayout(2,true));
/// Side Panel
Composite sideComposite = new Composite(shell, SWT.NONE);
sideComposite.setLayout(new RowLayout(SWT.VERTICAL | SWT.BORDER ));
Label codeLabel = new Label(sideComposite, SWT.NONE);
codeLabel.setText("Folders");
// Create list of folders
Composite foldersComposite = new Composite(sideComposite, SWT.NONE);
foldersComposite.setLayout(new GridLayout(2,true));
createFoldersComposite(foldersComposite);
// Create tags
Composite tagsComposite = new Composite(sideComposite, SWT.NONE);
tagsComposite.setLayout(new RowLayout());
createTagsComposte(tagsComposite);
/// .Side Panel
/// Main Panel
Composite mainComposite = new Composite(shell, SWT.NONE);
mainComposite.setLayout(new RowLayout(SWT.VERTICAL));
// Create search field
Composite searchComposite = new Composite(mainComposite, SWT.NONE);
searchComposite.setLayout(new GridLayout(2,true));
Label searchLabel = new Label(searchComposite, SWT.NONE);
searchLabel.setText("Search");
GridData gridData = new GridData();
gridData.horizontalSpan = 1;
searchLabel.setLayoutData(gridData);
Text searchText = new Text(mainComposite, SWT.BORDER | SWT.V_SCROLL);
searchLabel.setLayoutData(gridData);
// Create search result
Composite resultComposite = new Composite(mainComposite, SWT.BORDER);
resultComposite.setLayout(new GridLayout(2,true));
createResultComposite(resultComposite);
// Code Review
Text codeText = new Text(mainComposite, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER );
codeText.setSize(500, 500);
/// .Main Panel
}
问题:如何修复现有代码以获得所需的精确布局?将其分解为单独的小部件可能会有所帮助,而不是使用试图同时处理所有布局的单片控件。这允许您正确地确定每个单独组件上的布局,然后一次构建一块,以获得所需的总体布局 这在示例代码中尤其明显-您正在创建一个名为
searchComposite
的Composite
,其中包含两列GridLayout
,并将searchLabel
添加到该组合中。但是您正在将searchText
添加到mainComposite
,我认为这不是您想要的
相反,我将创建一个SearchControl
,它有两列GridLayout
,其中包含标签和文本。文本
上的网格数据
应抓取ExcessHorizontalSpace
以填充控件的其余部分
我建议大家更熟悉GridLayout
和GridData
。不要害怕实验。例如,您总是将true
传递给GridLayout
构造函数,这将使列宽匹配。虽然这是完全合理的,但它与您绘制的布局不匹配,因为有些柱比其他柱宽。此外,我建议查看GridDataFactory
。它将把所有的GridData
摆弄变成一行。“将其分解为单独的小部件?”你的意思是我应该创建另一个函数吗?GridDataFactory真的很棒:)