Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse RCP tableViewer未正确显示_Java_Swt_Jface_Rcp_Tableviewer - Fatal编程技术网

Java Eclipse RCP tableViewer未正确显示

Java Eclipse RCP tableViewer未正确显示,java,swt,jface,rcp,tableviewer,Java,Swt,Jface,Rcp,Tableviewer,在我的视图中有两个jface TableViewer,两个都定义为垂直占据相同的空间量,或者换句话说,两个都定义为获取多余的垂直空间并填充垂直对齐。 通过这种方式,视图可以正确显示,在小屏幕中,输入越多的表可以获得更多的空间,但是,在大屏幕中,两个表可以获得相同的空间量,这很好: 然而,由于来自底部表格的输入每次都是相同的,所以我真正想要的是使底部表格只获得显示该输入所需的空间量。。但我做不到,我将底部表格设置为不获取多余的垂直对齐,但它所做的是: 然后。。当我调整窗口大小时。。BAM,它将正确

在我的视图中有两个jface TableViewer,两个都定义为垂直占据相同的空间量,或者换句话说,两个都定义为获取多余的垂直空间并填充垂直对齐。 通过这种方式,视图可以正确显示,在小屏幕中,输入越多的表可以获得更多的空间,但是,在大屏幕中,两个表可以获得相同的空间量,这很好:

然而,由于来自底部表格的输入每次都是相同的,所以我真正想要的是使底部表格只获得显示该输入所需的空间量。。但我做不到,我将底部表格设置为不获取多余的垂直对齐,但它所做的是:

然后。。当我调整窗口大小时。。BAM,它将正确显示:

我不能理解这种行为。。有人能帮忙吗? 这是我的代码:

私有void createTableViewersComposite父对象{ //表1 Composite CompositeTableImportos=新的Compositeparent,SWT.NONE; CompositeTableImportos.setLayoutnew FillLayout; CompositeTableImportos.setLayoutDatanew GridDataSWT.FILL,SWT.FILL,true,true,2,1; TableImportos=CreateTableViewerCompositeTableImportos, interface evars.registocolabradors\u TABLEVIEWER\u column样式, LabelVARS.registocolabradors\u TABLEVIEWER\u COLUMN\u标题, interface evars.registocolatores\u TABLEVIEWER\u COLUMNSIZE, InterfaceVARS.STYLE_TABLE_SINGLE; TableImportos.setContentProvidercontentProvider=新的ImportosContentProviderTableImportos; TableImportos.setLabelProvidernew ImportosLabelProvider; //表2 Composite compositeTableLinhasDespesa=新的Compositeparent,SWT.NONE; compositeTableLinhasDespesa.setLayoutnew FillLayout; final GridData gridData2=新GridDataSWT.FILL,SWT.FILL,真,假,2,1; compositeTableLinhasDespesa.setLayoutDatagridData2; TableLinHasDespsa=CreateTableViewerCompositeTableLinHasDespsa, InterfaceVARS.Registeredesas_TABLEVIEWER_COLUMNSTYLE, LabelVARS.registodesesa_TABLEVIEWER_COLUMN_TITLES, interface evars.registodesesas_TABLEVIEWER_COLUMNSIZE, InterfaceVARS.STYLE\u TABLE\u MULTI; TableLinHasDispesa.setContentProviderlinhasContentProvider=新的LinHasDispesContentProviderTableLinHasDispesa,contentProvider; TableLinHasDespessa.SetLabelProvider新建LinHasDespesLabelProvider; } 公共类CustomTableViewer{ //观众 私人桌面浏览器; 专用TableColumnLayout tableViewerLayout; //纵队 私有字符串标题[]; 私有int-columnSize[]; 私有int-columnStyle[]; 公共CustomTableViewerComposite组合,int[]列样式,字符串标题[],int[]列大小,int样式{ this.titles=标题; this.columnStyle=columnStyle; this.columnSize=columnSize; tableViewerLayout=新的TableColumnLayout; 复合复合材料表=新复合材料,SWT.NONE; compositeTable.setLayouttableViewerLayout; tableViewer=新的TableViewercompositeTable,样式; Table Table=tableViewer.getTable; table.setLinesVisibletrue; table.SetHeadServiceTrue; addTableViewerColumns; addTableViewerListeners; } 私有void addTableViewerColumns{
forint index=0;index在调用setInput后在表的父组合中调用方法layoutnew Control[]{tableViewer2.getControl}完成了任务!

在对表调用setInput后,尝试在表的父组合中调用layouttrue。但是,layoutnew Control[{tableLinhasDespesa.getControl}完成任务了!谢谢@greg-449