【问题标题】:How to get the image to cell in TableViewer?如何在 TableViewer 中获取图像到单元格?
【发布时间】:2014-02-15 08:00:18
【问题描述】:

我创建了一个 TableViewer ( jface )。

在某些情况下我想隐藏图像。(控制图像的可见性) 逻辑在不同的类中完成,而不是在 tableViewer 中。 如何获取单元格然后控制图像可见性? .(我知道单元格的名称,它始终是表格查看器中的第一个单元格) //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);

}

【问题讨论】:

    标签: java jface


    【解决方案1】:

    ColumnLabelProvider 有一个类似于getText 方法的getImage 方法:

    public Image getImage(Object element);
    

    【讨论】:

    • 您好,我将我的逻辑添加到 tableCol.setLabelProvider() 并覆盖 getImage。现在问题是在某些情况下我想在我的代码中删除图像(可见 = false)。如何获取单元格然后更新图像?
    • 调用TableViewer.update(object)让查看者更新一个对象(对象是内容提供者返回的值)。您可能需要使用TableViewer.setUseHashlookup(true)
    • 我可以在不调用更新的情况下获取值吗?如果我会调用更新我可以移动任何参数吗?对象是指行还是单元格或列?
    • 如果我会调用更新我可以移动任何参数 - 我的意思是对象旁边的其他参数
    • TableViewer.update 将致电您的标签提供商以获取更新信息。
    猜你喜欢
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多