我有一个复合材料,想要为它添加一个表格。到目前为止这么好,但是表格在开始时没有输入,所以只有标题出现在复合材料上。但我希望表具有默认(最小)高度(宽度应由复合的GridLayout管理)。 复合材料抓住其父级的垂直和水平空间,因此应该有足够的空间用于表格。 我像这样添加表格:
//comp is my composite
TableViewer viewer = new TableViewer(comp);
viewer.getTable().setHeaderVisible(true);
//Add two TableViewerColumns
//300 should be the minimum / default height
viewer.computeSize(SWT.DEFAULT, 300);
复合材料中没有添加任何其他内容,复合材料似乎从其父级抓取所有空白区域,但表格未扩展到300的高度(宽度正确!)。
我希望你能理解我的问题:)
答案 0 :(得分:4)
computeSize返回一个Point,它表示表的首选大小 - 这实际上并没有设置组件的大小,因为布局可以忽略首选大小
如果您想要一个表的绝对固定高度,可以通过将表的父级设置为使用GridLayout布局,然后为表配置GridData来执行此操作:
comp.setLayout(new GridData());
gridData = new GridData();
gridData.heightHint = 300;
viewer.getTable().setLayoutData(gridData);