15.8 列表(ListViewer类)
15.8.1 ListViewer简介
在前面介绍过TableViewer和TreeViewer之后,ListViewer就没有什么新鲜的知识了。如果把TableViewer设置成一列,在界面上就成了ListViewer的样子。当然ListViewer类并非由TableViewer类简化而来,它是SWT的List组件的一个扩展,其谱系图如图15.8所示。
笔者在实际开发中很少用到ListViewer,简单的开发需求,用SWT的List就够了。对于复杂的开发需求,把TableViewer设置成一行也能满足,而且还便于扩展成多列。如果开发需求很明确:就只要一个列表,而且数据操作比较复杂、数据量比较多,这时就比较适合用ListViewer。
15.8.2 ListViewer的实例
ListViewer和TableViewer、TreeViewer一样也有自己的内容器和标签器。其内容器和TableViewer一样,标签器和TreeViewer的一样。甚至本小节实例中可以直接挪用TableViewer的内容器和TreeViewer的标签器。另外,本小节实例输入setInput方法的数据是用TreeViewer数据模型中的国家实体类。实例的主程序代码如下(效果如图15.9所示):
//--------------完整代码见ListViewer1.java----------------
shell.setLayout(new FillLayout());
ListViewer lv = new ListViewer(shell, SWT.BORDER);
lv.setContentProvider(new TableViewerContentProvider());
lv.setLabelProvider(new TreeViewerLableProvider());
java.util.List input = DataFactory.createTreeData();
lv.setInput(input);
lv.add(new CountryEntity("英国"));//也可以用add方法往列表中加入新项
lv.add(new CountryEntity("法国"));

图15.8 ListViewer的谱系图 图15.9 ListViewer的效果图
15.8.3 ListViewer的常用方法
ListViewer的常用方法如表15.1所示。
表15.1 ListViewer常用的方法
|
ListViewer常用方法 |
功 能 |
|
void add(Object element) |
添加一项 |
|
void add(Object[] elements) |
通过数组一次加入多项 |
|
Object getElementAt(int index) |
返回序号为index的记录(如国家实体类CountryEntity) |
|
List getList() |
ListViewer是List的扩展,此方法可得到内含的List组件 |
|
void remove(Object element) |
从ListViewer移去一项 |
|
void remove(Object[] elements) |
从ListViewer移去数组中的几项 |






