我想创建一个包含2-3个空行的空SWT表。另外,我想在按钮点击时用数据填充此表。
从我在网上找到的内容来看,无法创建一个空行的表。如果我想要空行,我需要添加一些我不想要的虚拟数据(2-3行的特定高度是好的)。 还有其他办法吗?
最好我有一个标题+ 3行高度的表格,它保持这个高度并且必须添加滚动条。我怎样才能做到这一点?
我的表格布局设置如下:
--prod
注意:Group tableGroup = new Group(parent, SWT.SHADOW_OUT);
GridLayout gridLayout = new GridLayout(1, false);
gridLayout.marginWidth = 5;
gridLayout.marginHeight = 5;
tableGroup.setLayout(gridLayout);
tableGroup.setText("Test");
Composite tableComp = new Composite(tableGroup, SWT.NONE);
TableViewerBuilder tableViewerBuilder = new TableViewerBuilder(tableComp, SWT.BORDER | SWT.NO_SCROLL | SWT.V_SCROLL);
tableViewer = tableViewerBuilder.getTableViewer();
GridData gridData = new GridData();
gridData.heightHint = tableViewer.getTable().getHeaderHeight()
+ (5 * tableViewer.getTable().getItemHeight());
tableGroup.setLayoutData(gridData);
只需创建一个新TableViewerBuilder
并将TableViewer
设置为TableColumnLayout
答案 0 :(得分:1)
SWT中小部件的大小和位置由布局管理器控制。因此,您需要指示表的布局管理器为其提供所需的高度。
如果表的父级使用GridLayout
,则可以使用提示来影响布局管理器的大小计算。
parent.setLayout( new GridLayout( 1, false ) );
...
Table table = new Table( parent, SWT.NONE );
GridData gridData = new GridData();
gridData.heightHint = table.getHeaderHeight() + ( 3 * table.getItemHeight() );
table.setLayoutData( gridData );
上面的示例告诉网格布局为表格预留高度为项目高度的3倍,加上标题行的空间。
请注意,添加项目后getItemHeight()
可能会发生变化,在这种情况下,您需要调整高度提示并重新布局。
答案 1 :(得分:0)
接受的答案确实帮助我取得了很大的成果。然而,在这里,我提供了最终解决方案,对我有用:
Group tableGroup = new Group(parent, SWT.SHADOW_OUT);
FillLayout fillLayout = new FillLayout(SWT.VERTICAL);
fillLayout.marginWidth = 5;
fillLayout.marginHeight = 5;
tableGroup.setLayout(fillLayout);
data = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
tableGroup.setText("Test");
Composite tableComp = new Composite(tableGroup, SWT.NONE);
TableViewerBuilder tableViewerBuilder = new TableViewerBuilder(tableComp,
SWT.BORDER | SWT.NO_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
tableViewer = tableViewerBuilder.getTableViewer();
tableViewer.setContentProvider(OpenFigiResponseContentProvider.getInstance());
data.heightHint = tableViewer.getTable().getHeaderHeight()
+ (5 * tableViewer.getTable().getItemHeight());
tableGroup.setLayoutData(data);
tableViewer.getTable().setLayoutData(data);
我得到一张完全填满Group