如何保持滚动时不会移动的列?

时间:2014-01-29 15:59:04

标签: java jface

我创建了tableviewer(jface)

我有一个带有图标的列。如果表格中的项目发生了更改,则列显示编辑图标。

当我滚动表格(从左向右滚动)时,是否可以执行一列不会移动并始终锁定。 可能是我有50列,我希望第一列始终锁定,用户可以看到该图标。

这是tableViwer的代码

 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 个答案:

答案 0 :(得分:1)

使用一个表无法完成此操作。您可以有两个表查看器,一个用于冻结列,另一个用于其余表。您必须同步两个表的垂直滚动。 There is a snipped with sample code

或者我相信Eclipse NatTable支持冻结列。