2014-02-12 158 views
0

我創建了tableviewer。如何刪除tableviewer中的冗餘列?

這些列是動態創建的。

問題是我總是在表中有另一列。

我檢查了列的名稱,我沒有得到任何空的列。

也許它可能是tableviewer的配置。

你有什麼想法,爲什麼我總是有另一列?

//該gridViewer類

 public class MyGridViewer extends TableViewer { 
    public MyGridViewer (Composite parent) { 
    super(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER); 

    final Table table = this.getTable(); 
    table.setHeaderVisible(true); 
    table.setLinesVisible(true); 

    this.setContentProvider(new MyModelProvider()); 

     } 
     } 


    @Override 
    protected void inputChanged(Object input, Object oldInput) { 

    removeColumn(); 



     tableCol = new TableViewerColumn(this, SWT.NONE); 
     column = tableCol.getColumn(); 
     column.setText(dataColumnHeader.getName()); 
     column.setWidth(100); 
     column.setResizable(true); 
     column.setMoveable(true); 
     tableCol.setLabelProvider(new ColumnLabelProvider() { 
      @Override 
      public String getText(Object element) { 
       DataRow r = (DataRow) element; 
       DataCell c = r.getDataCellByName(dataColumnHeader.getName()); 
       if (c != null && c.getValue() != null) { 
        return c.getValue().toString(); 
       } 
       return null; 
      } 
      @Override 
      public Image getImage(Object element) { 
        //Add my imgae 
      } 
     }); 



    editingSupport = new StringCellEditingSupport(this, dataColumnHeader); 
    tableCol.setEditingSupport(editingSupport); 
     super.inputChanged(input, oldInput); 

} 

回答

0

我不知道你reffering到什麼「冗餘」列,但也許你沒有正確設置它(如果你說他們是動態創建)。

如果我是你,我會以不同的方式添加它們。

private void createColumns() 
{ 
    // First, dipose any previously created columns 
    for (TableColumn column : table.getColumns()) 
     column.dispose(); 

    // Then recreate them 
    for (MyColumnPO col : getColumns()) 
    { 
     TableColumn newCol = new TableColumn(table, SWT.NONE); 
     newCol.setText(col.text); 
     newCol.setWidth(col.width); 
    } 
} 

MyColumnPO將是一個POJO,代表「我的專欄演示對象」。這包含有關您的列的信息(文本,寬度,工具提示)。

現在,在getColumns()方法,您可以添加/創建/刪除/更新所需的列,實例MyColumnPO對象,並將其添加到一個List你會回來。

每次需要動態重新創建列時,請致電createColumns()

+0

我的意思是,即使在第一次我有另一列 – user1365697

+0

,所以它與處置無關。 – user1365697