2014-09-05 30 views
0

我有以下代碼可以創建TableViewerTableViewer從ArrayLists添加數據Eclipse插件

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

你真的需要在表中每行一個對象。

如果你創建一個包含每行一個對象數組或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), ...}); 
} 

設置此a S中輸入給觀衆:

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; 
    } 
} 
+0

我用這個,但我不能把名單作爲輸入,以填補表的列。 – 2014-09-05 12:36:32

+0

您需要創建一個包含一行所有數據的新類,並將其用於內容提供者和標籤提供者。 – 2014-09-05 12:38:16