2014-09-05 2 views
0

다음 코드는 TableViewer입니다.TableViewer ArrayLists에서 데이터 추가하기 이클립스 플러그인

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), ...}); 
} 

시청자의 입력은 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

I이 사용을하지만 테이블의 열을 채우기 위해 입력으로 목록을 넣을 수 아니에요. –

+0

행에 대한 모든 데이터를 포함하는 새 클래스를 만들어 콘텐츠 공급자 및 레이블 공급자와 함께 사용해야합니다. –