我有以下代码创建TableViewer
。
TableViewer viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
如何创建ContentProvider
以便从表的列中的数组列表中添加数据?
我有这些列表,我想在表格中添加它们。
答案 0 :(得分:1)
表格中每行确实需要一个对象。
如果您创建每行包含单个对象的数组或ArrayList,则可以使用标准ArrayContentProvider
:
viewer.setContentProvider(ArrayContentProvider.getInstance());
行数据类可能类似于:
class RowData
{
private String [] cols;
RowData(String [] theCols)
{
cols = theCols;
}
String getColumn(int index)
{
return cols[index];
}
}
从现有列表中创建一系列数组:
RowData [] rows = new RowData [listSize];
for (int i = 0; i < listSize; i++)
{
rows[i] = new RowData(new String [] {col0List.get(i), col1list.get(i), ...});
}
将此设置为查看器的输入:
viewer.setInput(rows);
但仅在查看器中设置内容提供商和标签提供商后执行此操作。
使用实施ITableLabelProvider
的标签提供商:
class MyLabelProvider extends LabelProvider implements ITableLabelProvider
{
@Override
public String getColumnText(Object element, int columnIndex)
{
RowData rowData = (RowData)element;
return rowData.getColumn(columnIndex);
}
@Override
public Image getColumnImage(Object element, int columnIndex)
{
return null;
}
}