TableViewer从ArrayLists Eclipse插件添加数据

时间:2014-09-05 11:33:45

标签: java eclipse plugins eclipse-plugin jface

我有以下代码创建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以便从表的列中的数组列表中添加数据? 我有这些列表,我想在表格中添加它们。

1 个答案:

答案 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;
   }
 }