Как удалить лишний столбец в просмотрщике таблиц?

Я создал просмотрщик таблиц.

Столбцы создаются динамически.

Проблема в том, что у меня всегда есть другой столбец в таблице.

Я проверил имена столбцов и не получил ни одного пустого столбца.

Может быть, это может быть конфигурация просмотра таблицы.

У вас есть идея, почему у меня всегда есть еще одна колонка?

// класс 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(),

Другие вопросы по тегам