2013-02-05 63 views
0

我實現表查看這樣將內容添加到表查看動態

folderAssociationTable = componentsRenderer.createTableWidget(container, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION, 2, true); 

     folderAssociationTable.addListener(SWT.MeasureItem, new Listener() { 
      public void handleEvent(Event event) { 
       event.height = 20; 
      } 
     }); 
     tableViewer = new TableViewer(folderAssociationTable); 
     tableViewer.getTable().setHeaderVisible(true); 
     tableViewer.getTable().setLinesVisible(true); 
     tableViewer.setContentProvider(new ArrayContentProvider()); 


     TableColumn column = new TableColumn(tableViewer.getTable(), SWT.NONE); 
     column.setText("CheckBox"); 
     column.setWidth(100); 
     checkBoxColumn = new TableViewerColumn(tableViewer, column); 


     column = new TableColumn(tableViewer.getTable(), SWT.NONE); 
     column.setText("Source Folder"); 
     column.setWidth(200); 
     sourceFolderColumn = new TableViewerColumn(tableViewer, column); 

     column = new TableColumn(tableViewer.getTable(), SWT.NONE); 
     column.setText("Target Folder"); 
     column.setWidth(200); 
     targetFolderColumn = new TableViewerColumn(tableViewer, column); 

現在我想conent添加到該表中,第一列我想補充複選框,並在另一個兩列要添加字符串在for循環中動態的值,我如何將這些內容添加到表查看器。

回答

0

首先,如果你只是想表明複選框,字符串,其中設置的圖像,你不需要TableViewer。改爲使用Table!如果你需要更復雜的東西,例如顯示任意的Java對象,查看器很有用。

  1. 如果您想添加複選框,請使用CheckboxTableViewerICheckStateProvider。您需要使用SWT.CHECK風格創建您的表格。
  2. 要添加值,您需要爲查看器設置一些輸入。在ArrayContentProvider情況下,這僅僅是一個數組或一個集合:

    // ModelObject is whatever type of objects you want to show. Maybe just String... 
    List<ModelObject> inputList = new ArrayList<ModelObject>(); 
    // build the list 
    while (...) { 
        ModelObject newObject = ... 
        inputList.add(newObject); 
    } 
    
    tableViewer.setInput(inputList); 
    

    如果以後需要更改列表,請撥打tableViewer.refresh()

其餘參見Vogella tutorial

+0

您好阿列克謝,我有內部對此我實現到表查看器,一個用於複選框IR,的CheckboxTableViewer和另外一個正常的TableViewer字符串成分表,所以在柱部件的條目的基礎上,我想添加複選框,如何我可以這樣做嗎 –

+0

不,你不應該爲一張桌子有兩個桌子觀衆,這是沒有意義的。 –

+0

so alexey,我如何處理這種情況在我的情況下,我想添加兩個簡單的字符串到兩列,並在該行中的複選框基於計數我wnat動態做這些事情,你上面建議的解決方案我已經嘗試過但是當我正在採取字符串數組像這樣String [] folderInfo = {folderlist [i],targetFolderPath1}; tableViewer.setInput(folderInfo);文件夾列表[i]和目標文件夾路徑被添加到第一列本身,這意味着複選框,所以請詳細說明這種情況,如何添加複選框在第一列col –