动态地向表查看器添加内容

时间:2013-02-05 13:23:24

标签: java swt tableviewer

我正在实现像这样的表格查看器

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循环中动态添加字符串值,如何将这些内容添加到Table Viewer。

1 个答案:

答案 0 :(得分: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()

  3. 其他方面,请参阅Vogella tutorial