当新的输入被设置时,TableViewer缩小到一个带有滚动条的行 [英] TableViewer shrinks to a single row with a scroll bar when new input is set
问题描述
ViewPart中的 TableViewer
中
。 TableViewer使用 ArrayContentProvider
如图所示 viewer = new TableViewer(parent ,SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
...
viewer.setContentProvider(new ArrayContentProvider());
我还有一个处理程序可以访问 TableViewer
从XML文件导入数据的实例。当导入程序导入数据时,我创建一个 ModelProvider
实例,该实例生成数据由 TableViewer
显示的对象列表。
然后处理程序设置输入:
viewer.setInput(new ModelProvider Data.getDocs())。getTableRows())
;
当我测试此应用程序时,使用此 ViewPart
已经打开(并且 TableViewer
为空),并调用导入数据的处理程序,数据是成功导入的,但$ TableViewer
只显示一行和滚动条。只有当我将 ViewPart
拖动到Workbench上的其他位置时,才会显示所有行。
甚至尝试:
viewer.setInput(new ModelProvider(Data.getDocs())。getTableRows());
viewer.refresh();
和
viewer.setInput(空);
viewer.setInput(new ModelProvider(Data.getDocs())。getTableRows());
viewer.refresh();
但无效。
我不认为你有一张桌子问题,但是布局问题。
如果您的查看者的父级有一个 GridLayout
,那么请执行以下操作:
viewer.getTable()。setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
/ p>
或者你可以在父母上设置一个 FillLayout
,就是这样。
(如果您认为我误解了您的问题,请张贴截图)
I am implementing a plug-in in eclipse, which reads a set of values from a database and displays it in a TableViewer
inside a ViewPart
. The TableViewer uses an ArrayContentProvider
as shown
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
...
viewer.setContentProvider(new ArrayContentProvider());
I also have a handler which has access to the TableViewer
instance for importing data from an XML file. When the importer imports data, I create a ModelProvider
instance which generates a list of objects whose data is displayed by TableViewer
.
The handler then sets the input:
viewer.setInput(new ModelProvider(Data.getDocs()).getTableRows())
;
When I test this application, with this ViewPart
already open (and the TableViewer
being empty) and invoke the handler for importing data, the data is imported succesfully but the TableViewer
shows only a single row and the scroll bar. Only when I drag the ViewPart
to some other location on the Workbench, then all the rows are shown.
I have even tried:
viewer.setInput(new ModelProvider(Data.getDocs()).getTableRows());
viewer.refresh();
and
viewer.setInput(null);
viewer.setInput(new ModelProvider(Data.getDocs()).getTableRows());
viewer.refresh();
but nothing works. How do I make all the rows display as soon as new input is set?
I don't think you have a table problem, but a layout problem.
If your viewer's parent has a GridLayout
, then do:
viewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
OR you can just set a FillLayout
on the parent, and that's it.
(if you think I misunderstood your question, please post a screenshot)
这篇关于当新的输入被设置时,TableViewer缩小到一个带有滚动条的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!