在jface中,TableViewer如何删除已有列,或者如何重置列数据
时间: 2024-02-27 17:54:21 浏览: 225
TableView删除,修改,编辑
5星 · 资源好评率100%
要删除已有的列,可以使用TableViewer的getTable()方法获取Table对象,然后调用Table的setRedraw(false)方法暂停重绘操作,接着使用Table的getColumn(int index)方法获取指定列的TableColumn对象,再调用该对象的dispose()方法删除该列,最后再调用Table的setRedraw(true)方法恢复重绘操作。示例代码如下:
```
Table table = tableViewer.getTable();
table.setRedraw(false);
TableColumn column = table.getColumn(columnIndex);
column.dispose();
table.setRedraw(true);
```
如果要重置列数据,可以先删除所有列,然后重新添加需要的列,最后更新TableViewer的内容。示例代码如下:
```
Table table = tableViewer.getTable();
table.setRedraw(false);
TableColumn[] columns = table.getColumns();
for (TableColumn column : columns) {
column.dispose();
}
// 添加需要的列
tableViewer.setColumnProperties(columnProperties);
for (int i = 0; i < columnNames.length; i++) {
TableViewerColumn viewerColumn = new TableViewerColumn(tableViewer, SWT.NONE);
TableColumn column = viewerColumn.getColumn();
column.setText(columnNames[i]);
column.setWidth(columnWidths[i]);
column.setResizable(true);
column.setMoveable(true);
viewerColumn.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
// 返回该列的数据
}
});
}
tableViewer.setInput(input);
table.setRedraw(true);
```
阅读全文