当新的输入被设置时,TableViewer缩小到一个带有滚动条的行 [英] TableViewer shrinks to a single row with a scroll bar when new input is set

查看:223
本文介绍了当新的输入被设置时,TableViewer缩小到一个带有滚动条的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在eclipse中实现插件,它从数据库中读取一组值,并将其显示在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆