Как удалить лишний столбец в просмотрщике таблиц?
Я создал просмотрщик таблиц.
Столбцы создаются динамически.
Проблема в том, что у меня всегда есть другой столбец в таблице.
Я проверил имена столбцов и не получил ни одного пустого столбца.
Может быть, это может быть конфигурация просмотра таблицы.
У вас есть идея, почему у меня всегда есть еще одна колонка?
// класс 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 ответ
Я не знаю точно, к какой "избыточной" колонке вы обращаетесь, но, возможно, вы неправильно ее распределили (если вы говорите, что они создаются динамически).
На вашем месте я бы добавил их по-другому.
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, который расшифровывается как "My Column Presentation Object". Он содержит информацию о ваших столбцах (текст, ширина, всплывающая подсказка).
Теперь в getColumns()
метод, вы добавляете / создаете / удаляете / обновляете нужные столбцы, создаете MyColumnPO
объекты, и добавив их в List
который ты вернешь.
Каждый раз, когда вам нужно динамически создавать столбцы, вы вызываете createColumns()
,