两个SWT表战斗抢占空间
问题描述:
我有两个SWT表包装在一个Group
,它有一个ScrolledComposite
防止浏览器滚动条(而不是滚动表)。两个SWT表战斗抢占空间
table_sizing_toolInfo = new Table(grpCapacityReport, SWT.BORDER);
table_sizing_toolInfo.setData(RWT.FIXED_COLUMNS, Integer.valueOf(6));
table_sizing_toolInfo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
这两个表格都有GridData
,它抓住了多余的垂直空间。
当不使用数据进行渲染时,表格按预期工作(两者都占用过多,因此它们会拆分视图空间)。 一旦数据填充到表格中,它将按预期方式显示,直到切换选项卡(强制重绘)为止,它仍会仍然显示。
table_sizing_dgrInfo.setRedraw(false);
table_sizing_toolInfo.setRedraw(false);
table_sizing_dgrInfo.removeAll();
table_sizing_toolInfo.removeAll();
while (table_sizing_dgrInfo.getColumnCount() > 6) {
table_sizing_dgrInfo.getColumns()[6].dispose();
}
while (table_sizing_toolInfo.getColumnCount() > 6) {
table_sizing_toolInfo.getColumns()[6].dispose();
}
renderSizingTableDynamic(scenarioMap.get(combo_sizing_ScenarioID.getText()));
table_sizing_toolInfo.setRedraw(true);
table_sizing_dgrInfo.setRedraw(true);
底部表保存比上表中更多的数据,更多的行添加表格底部吞噬的*表的空间,直到它只是一个单一的pixle高。
答
ScrolledComposite
不太可能满足您的需求。如果你想两个表采取同样的高度,那么你应该使用一个Rowlayout
这样的:
parent.setLayout(new RowLayout(SWT.VERTICAL));
Table topTable = new Table(parent, ...);
Table bottomTable = new Table(parent, ...);
你也可以使用一个SashForm
作为两个表的父。因此,让用户拖动分离表格的窗框并确定每个表格应该占用多少高度。
有关更多信息,文章Understanding SWT Layouts提供了有关SWT标准布局的深入讨论。您可以放心地忽视弃用警告,这里讨论的概念仍然有效。
我不希望两个表具有相同的高度。顶部桌子应该适合内容,底部桌子应该抓住多余的垂直空间。 在这种情况下扩展网格布局与'dgrInfoGD.minimumHeight = SWT.DEFAULT;' 工作这里的问题是,多余的变量空间是有条件的浏览器窗口空间(我没有动态调整大小监听器布局...然而)。 考虑到这种情况,即使对于我的使用来说,窗口空间应该总是有足够的空间来存放两个表,'SashForm'对于UX来说是最一致的。 – Elysiumplain