Eclipse plugin 向表格单元格添加下拉列表

Eclipse plugin 向表格单元格添加下拉列表,eclipse-plugin,eclipse-rcp,Eclipse Plugin,Eclipse Rcp,我在EclipseRCP中遇到了一些为特定单元格设置下拉列表的问题。 我的要求是在表格的第一行设置下拉列表。这个下拉列表应该也可以删除。 还有一件事,drop应该能够过滤表中的内容。所以我的问题是 1) 是否可以仅将下拉列表添加到特定单元格或行? 2) 该筛选器能否充当表的筛选器? 3) 将下拉列表添加到表格单元格后如何删除?是的,这是完全可能的。我建议你从阅读开始,本教程包含了你需要知道的一切 作为一个粗略的概述,您需要使内容模型中的第一项不同于您的数据项—它将存储过滤器值。然后在您的Tabl

我在EclipseRCP中遇到了一些为特定单元格设置下拉列表的问题。 我的要求是在表格的第一行设置下拉列表。这个下拉列表应该也可以删除。 还有一件事,drop应该能够过滤表中的内容。所以我的问题是

1) 是否可以仅将下拉列表添加到特定单元格或行? 2) 该筛选器能否充当表的筛选器?
3) 将下拉列表添加到表格单元格后如何删除?

是的,这是完全可能的。我建议你从阅读开始,本教程包含了你需要知道的一切

作为一个粗略的概述,您需要使内容模型中的第一项不同于您的数据项—它将存储过滤器值。然后在您的
TableViewer列上设置编辑支持(这只是一个开始-此代码本身无法工作):


是的,这是完全可能的。我建议你从阅读开始,本教程包含了你需要知道的一切

作为一个粗略的概述,您需要使内容模型中的第一项不同于您的数据项—它将存储过滤器值。然后在您的
TableViewer列上设置编辑支持(这只是一个开始-此代码本身无法工作):


好啊谢谢你的宝贵信息。但我仍然想知道,我们是否可以只为一列或一行中的一个单元格添加和删除下拉列表?我也看过你推荐的这个网站。是的,您为表中的每一列创建了一个TableViewColumn,因此可以对每一列提供完全不同的编辑支持。使用
canEdit
方法决定单元格是否显示下拉列表。你知道,通过接受答案,人们将来更有可能帮助你……那篇文章很古老。它真的还能用吗?好的。谢谢你的宝贵信息。但我仍然想知道,我们是否可以只为一列或一行中的一个单元格添加和删除下拉列表?我也看过你推荐的这个网站。是的,您为表中的每一列创建了一个TableViewColumn,因此可以对每一列提供完全不同的编辑支持。使用
canEdit
方法决定单元格是否显示下拉列表。你知道,通过接受答案,人们将来更有可能帮助你……那篇文章很古老。它真的还可用吗?
tableViewerColumn.setEditingSupport(new EditingSupport(tableViewer)
{
    @Override
    protected boolean canEdit(Object element) {
        if(object instanceof FilterDataObject) // your model object you are using to store the filter selections
        {
            return true;
        }
    }

    @Override
    protected CellEditor getCellEditor(Object element) 
    {               
        final ComboBoxCellEditor editor = new ComboBoxCellEditor(table, getPossibleFilterValues(), SWT.READ_ONLY);              
        ((CCombo)editor.getControl()).addModifyListener(new ModifyListener()
        {
            public void modifyText(ModifyEvent e) 
            {
                IStructuredSelection sel = (IStructuredSelection)m_tableViewer.getSelection();
                FilterDataObject filterValue = (FilterDataObject)sel.getFirstElement();
                // .. update the filter on your TableViewer
            }               
        });             
        return editor;
    }

    @Override
    protected Object getValue(Object element) 
    {
        if(object instanceof FilterDataObject) 
        {               
            // get the filter value
        }
        else
        {
            // get your data model's value for this column
        }
    }

    @Override
    protected void setValue(Object element, Object value) 
    {
        if(object instanceof FilterDataObject) 
        {
            // update your FilterDataObject
        }
    }       
});