【问题标题】:SWT - Table / Combo boxSWT - 表格/组合框
【发布时间】:2017-04-24 06:22:05
【问题描述】:

如何向表格中的特定列添加组合框?
我希望我的最后一列有一个包含 3 个选项(是、否、两者)的组合框。 我将包含我的表格代码,以便您更好地向我展示新代码的运行方式和情况。

  //////////////////////////////////////////////////////////////////////////
//                         createTableViewer()                          //
//////////////////////////////////////////////////////////////////////////
private TableViewer createTableViewer(Composite parent) {
  viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
  createColumns(parent, viewer);
  Table table = viewer.getTable();
  table.setHeaderVisible(true);
  table.setLinesVisible(true);

  // Layout the viewer
  GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
  viewer.setContentProvider(new ArrayContentProvider());
  viewer.setInput(AplotDataModel.getInstance().getArrayData());
  viewer.getControl().setLayoutData(gridData);
  return viewer;
}

//////////////////////////////////////////////////////////////////////////
//                         createColumns()                              //
//////////////////////////////////////////////////////////////////////////
private void createColumns(final Composite parent, final TableViewer viewer) {
  String[] titles = { "ItemId", "RevId", "PRL", "Dataset Name", "EC Markup" };
  int[] bounds = { 150, 150, 100, 150, 100 };

  TableViewerColumn col = createTableViewerColumn(titles[0], bounds[0], 0);
  col.setLabelProvider(new ColumnLabelProvider() {
     @Override
     public String getText(Object element) {
        AplotDatasetData item = (AplotDatasetData) element;
        return item.getDataset().toString();
     }
  });

  col = createTableViewerColumn(titles[1], bounds[1], 1);
  col.setLabelProvider(new ColumnLabelProvider() {
     @Override
     public String getText(Object element) {
        AplotDatasetData item = (AplotDatasetData) element;
        return item.getRev().toString();
     }
  });

  col = createTableViewerColumn(titles[2], bounds[2], 2);
  col.setLabelProvider(new ColumnLabelProvider() {
     @Override
     public String getText(Object element) {
        AplotDatasetData item = (AplotDatasetData) element;
        return item.getPRLValue();
     }
  });

  col = createTableViewerColumn(titles[3], bounds[3], 3);
  col.setLabelProvider(new ColumnLabelProvider() {
     @Override
     public String getText(Object element) {
        AplotDatasetData item = (AplotDatasetData) element;
        return item.getDatasetName();
     }
  });

  col = createTableViewerColumn(titles[4], bounds[4], 4);
  col.setLabelProvider(new ColumnLabelProvider() {
     @Override
     public String getText(Object element) {
        AplotDatasetData item = (AplotDatasetData) element;
        return item.getECMarkupValue();
     }
  });
}

//////////////////////////////////////////////////////////////////////////
//                       createTableViewerColumn()                      //
//////////////////////////////////////////////////////////////////////////
private TableViewerColumn createTableViewerColumn(String title, int bound, final int colNumber) {
  final TableViewerColumn viewerColumn = new TableViewerColumn(viewer, SWT.NONE);
  final TableColumn column = viewerColumn.getColumn();
  column.setText(title);
  column.setWidth(bound);
  column.setResizable(true);
  column.setMoveable(true);
  return viewerColumn;
}

【问题讨论】:

    标签: java swt


    【解决方案1】:

    有很好的例子herehere

    两者都在EditingSupport 中使用ComboBoxViewerCellEditor 来提供Combobox 作为表内编辑。

    【讨论】:

    • 是否可以在右侧显示带有向下箭头的组合框,所以它看起来真的像一个组合,我在表格中添加了组合框,但它显示为普通列,除非用户点击它
    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    相关资源
    最近更新 更多