Java 为什么SWT列表会填充所有组合?
您好,我有一个SWT布局的问题,我想创建一个应用程序与4个相同大小的列表。当列表为空时,每个列表看起来都很好,但是当我使用覆盖整个组合的数据来完成其中一个列表时 和包含数据的列表: 我知道它的布局是错误的,所以我将向您展示一些来源:Java 为什么SWT列表会填充所有组合?,java,layout,swt,Java,Layout,Swt,您好,我有一个SWT布局的问题,我想创建一个应用程序与4个相同大小的列表。当列表为空时,每个列表看起来都很好,但是当我使用覆盖整个组合的数据来完成其中一个列表时 和包含数据的列表: 我知道它的布局是错误的,所以我将向您展示一些来源: shlPirotechnikafcwnxrap.setLayout(new FillLayout(SWT.HORIZONTAL)); ...... Composite mainComposite = new Composite(shlPirotechnika
shlPirotechnikafcwnxrap.setLayout(new FillLayout(SWT.HORIZONTAL));
......
Composite mainComposite = new Composite(shlPirotechnikafcwnxrap,
SWT.NONE);
mainComposite.setLayout(new FormLayout());
......
Composite rightCenterComposite = new Composite(mainComposite, SWT.NONE);
rightCenterComposite.setLayoutData(new FormData());
rightCenterComposite.setLayout(new GridLayout());
rightCenterComposite.setLayoutData(GUIHelper.getFormData(5, 100, 30, 100));
TabFolder tabFolder = new TabFolder(rightCenterComposite, SWT.NONE);
tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
/**
* TAB ITEM
*/
TabItem tbtmSql = new TabItem(tabFolder, SWT.NONE);
tbtmSql.setText("SQL");
/**
* Composite inside TabItem
*/
Composite sqlTabComposite = new Composite(tabFolder, SWT.NONE);
GridLayout gl_sqlTabComposite = new GridLayout();
gl_sqlTabComposite.makeColumnsEqualWidth = true;
gl_sqlTabComposite.numColumns = 2;
sqlTabComposite.setLayout(gl_sqlTabComposite);
sqlTabComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
tbtmSql.setControl(sqlTabComposite);
Group grpSowaKluczoweSql = new Group(sqlTabComposite, SWT.NONE);
grpSowaKluczoweSql.setLayout(new FormLayout());
grpSowaKluczoweSql.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
grpSowaKluczoweSql.setText("S\u0142owa kluczowe i operatory SQL:");
List listSlowaKluczoweSql = new List(grpSowaKluczoweSql, SWT.BORDER | SWT.V_SCROLL);
listSlowaKluczoweSql.setLayoutData(new FormData());
listSlowaKluczoweSql.setLayoutData(GUIHelper.getFormData(0, 100, 0, 100));
Group grpTabele = new Group(sqlTabComposite, SWT.NONE);
grpTabele.setLayout(new FormLayout());
grpTabele.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
grpTabele.setText("Nazwy tabel:");
List listTabele = new List(grpTabele, SWT.BORDER | SWT.V_SCROLL);
listTabele.setLayoutData(new FormData());
listTabele.setLayoutData(GUIHelper.getFormData(0, 100, 0, 100));
这是因为:
sqlTabComposite.setLayoutData(新的GridData(SWT.FILL,SWT.FILL,true,true))
您正在使用填充+获取多余空间。尝试使用适当的布局常量,如水平对齐时使用开始
,垂直对齐时使用顶部
。同时将grabeExcessVerticalSpace
设置为false。检查所有相关位置。我尝试了您的解决方案,效果不错,但我也想在调整窗口大小后保留组件的比例。这就是在窗口调整大小时调整组件的大小,反之亦然。请尝试添加一个调整大小的侦听器并相应地调整控件?问题已解决,我已使用FormData
将布局更改为FormLayout
。谢谢你抽出时间。