java - 如何在 TableViewerColumn 中使用 CheckBoxTableCell

标签 java jface tableviewer

我找不到任何在 TableViewerColumn 中使用 CheckBoxTableCell 的示例,如果有人可以为我提供示例实现,我将不胜感激。

我已经有一个显示一些字符串值的工作模型,但我无法将 boolean 值表示为复选框。

是否可以在 TableViewerColumn 中显示除字符串以外的任何其他内容?

最佳答案

这是一个 exampleTableViewerColumn 中有一个复选框。它使用图像来表示单元格中的 boolean 值。

它创建了一个自定义 View ,它扩展了 ViewPart 两个静态字段来保存图像:

Image CHECKED = Activator.getImageDescriptor("icons/checked.gif").createImage();
Image UNCHECKED = Activator.getImageDescriptor("icons/unchecked.gif").createImage();

然后在 createColumns 方法中根据 boolean 值返回其中一张图像:

col.setLabelProvider(new ColumnLabelProvider() {
  @Override
  public String getText(Object element) {
    return null;
  }

  @Override
  public Image getImage(Object element) {
    if (((Person) element).isMarried()) {
      return CHECKED;
    } else {
      return UNCHECKED;
    }
  }
});

请检查上面给出的链接以获取更多详细信息。

如果你想要一个可编辑的复选框,你需要创建一个EditingSupport您希望具有复选框的列的对象。

这是一个例子:

public class CheckBoxColumnEditingSupport extends EditingSupport {

    private TableViewer tableViewer;

    public CheckBoxColumnEditingSupport(TableViewer viewer) {
        super(viewer);
        this.tableViewer = viewer;
    }

    @Override
    protected CellEditor getCellEditor(Object o) {
        return new CheckboxCellEditor(null, SWT.CHECK);
    }

    @Override
    protected boolean canEdit(Object o) {
        return true;
    }

    @Override
    protected Object getValue(Object o) {
        ORMData ormData = (ORMData) o;
        return ormData.isOrmIndicator();
    }

    @Override
    protected void setValue(Object element, Object value) {
        ORMData ormData = (ORMData) element;
        ormData.setOrmIndicator((Boolean) value);
        tableViewer.refresh();
    }
}

然后将编辑支持添加到表格中的特定列:

tableViewerColumn.setEditingSupport(new CheckBoxColumnEditingSupport (myTableViewer));

查看此 turotial关于如何使用列编辑支持。还有这篇关于 How to add an editable checkbox at JFace TableViewer 的详细帖子

关于java - 如何在 TableViewerColumn 中使用 CheckBoxTableCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29742640/

相关文章:

java - Eclipse关闭时如何避免触发TableViewer

JFace TableViewer 获取多个选定行

java - 集成测试,但是多少?

java - TitleAreaDialog - 调整标题图像

java - 为什么 StringTokenizer.hasMoreTokens 不应该返回 true?

java - Jface Dialog,如何正确检索用户按下了什么按钮?

java - 如何在 TreeViewer 中的第二列中展开列

eclipse - 设置新输入时,TableViewer 缩小为带有滚动条的单行

java - 在 MUnit 中获取 http 响应代码

java - JUnit TestCase 对象实例化