java如何删除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);
}
# 1 楼答案
我不知道您引用的是什么“冗余”列,但可能您没有正确地处理它(如果您说它们是动态创建的)
如果我是你,我会以不同的方式添加它们
MyColumnPO
将是一个POJO,代表“我的列表示对象”。这包含有关列的信息(文本、宽度、工具提示)现在,在
getColumns()
方法中,添加/创建/删除/更新所需的列,实例化MyColumnPO
对象,并将它们添加到将返回的List
中每次需要动态地重新创建列时,调用
createColumns()