两个SWT桌子争夺空间

时间:2017-04-07 18:59:55

标签: layout swt

我有两个SWT表包含在Group中,其中ScrolledComposite用于阻止浏览器滚动条(而只是滚动表格)。

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);

底部表格比顶部表格拥有更多数据,并且随着更多行的添加,底部表格吞噬了顶部表格的空间,直到它只有一个像素高。

1 个答案:

答案 0 :(得分:1)

<route id="cassendraroute"> <from uri="direct:routecassendra"/> <to uri="cql://127.0.0.1/empdetails?cql=select * from employee;&amp;prepareStatements=false "/> </route> 不太可能满足您的需求。如果您希望两个表都采用相同的高度,那么您应该使用ScrolledComposite,如下所示:

Rowlayout

您也可以使用parent.setLayout( new RowLayout( SWT.VERTICAL ) ); Table topTable = new Table( parent, ... ); Table bottomTable = new Table( parent, ... ); 作为两个表的父级。因此,让用户拖动分隔表格的窗框,并决定每个桌子应该采取多少高度。

有关详细信息,文章Understanding SWT Layouts提供了对SWT标准布局的深入讨论。您可以放心地忽略弃用警告,所讨论的概念仍然有效。