Layout 两张SWT桌子争抢空间

Layout 两张SWT桌子争抢空间,layout,swt,Layout,Swt,我将两个SWT表包装在一个组中,该组具有一个滚动组合,以防止浏览器滚动条(而只是滚动表) table\u size\u toolInfo=新表(grpCapacityReport,SWT.BORDER); 表_size_toolInfo.setData(RWT.FIXED_列,Integer.valueOf(6)); 表_size_toolInfo.setLayoutData(新网格数据(SWT.FILL,SWT.FILL,true,true)); 两个表都有GridData,它占用了多余的垂

我将两个SWT表包装在一个
组中
,该组具有一个
滚动组合
,以防止浏览器滚动条(而只是滚动表)

table\u size\u toolInfo=新表(grpCapacityReport,SWT.BORDER);
表_size_toolInfo.setData(RWT.FIXED_列,Integer.valueOf(6));
表_size_toolInfo.setLayoutData(新网格数据(SWT.FILL,SWT.FILL,true,true));
两个表都有
GridData
,它占用了多余的垂直空间

在没有数据的情况下进行渲染时,表按预期工作(两个表都有多余的抓取空间,因此它们会分割视图空间)。 数据填充到表中后,仍按预期显示,直到切换选项卡(强制重画)

table_size_dgrInfo.setRedraw(false);
表_size_toolInfo.setRedraw(假);
表_size_dgrInfo.removeAll();
表_size_toolInfo.removeAll();
while(表_size_dgrInfo.getColumnCount()>6){
表_size_dgrInfo.getColumns()[6].dispose();
}
while(表_size_toolInfo.getColumnCount()>6){
表_size_toolInfo.getColumns()[6].dispose();
}
RenderShingTableDynamic(scenarioMap.get(combo_sizing_ScenarioID.getText());
表_size_toolInfo.setRedraw(真);
表_size_dgrInfo.setRedraw(真);

底部表格比顶部表格容纳更多的数据,并且随着更多行的添加,底部表格会占用顶部表格的空间,直到它只有一个像素高。

此处的
Scrolled Composite
不太可能满足您的需要。如果希望两个表具有相同的高度,则应使用如下
Rowlayout

parent.setLayout(新的行布局(SWT.VERTICAL));
表topTable=新表(父表,…);
Table bottomTable=新表(父表,…);
您还可以使用
SashForm
作为两个表的父表。这样,用户就可以拖动分隔桌子的窗框,并决定每张桌子的高度


为了获得更多信息,本文对SWT标准布局进行了深入讨论。您可以放心地忽略弃用警告,这里讨论的概念仍然有效。

我不希望两个表具有相同的高度。上表应该适合内容,下表应该占据多余的垂直空间。在这种情况下,使用
dgrInfoGD.minimumHeight=SWT.DEFAULT扩展gridlayout这里的问题是多余的变量空间取决于浏览器窗口空间(我还没有动态调整侦听器布局…)。考虑到这种情况,即使对于我的使用,窗口空间应该始终有足够的空间容纳两个表,
SashForm
对于UX来说是最一致的。