1

特定のセルのドロップダウンを設定するために、eclipse rcp でいくつかの問題に直面しています。私の要件は、テーブルの最初の行にドロップダウンを設定することです。そして、そのドロップダウンも削除できるはずです。ドロップするもう1つのことは、テーブルの内容をフィルタリングできるはずです。だから私の質問はそれです

1) 特定のセルまたは行にのみドロップダウンを追加することは可能ですか? 2) そのフィルターはテーブルのフィルターとして機能しますか? 3) テーブル セルにドロップダウンを追加したら、どうすれば削除できますか?

4

1 に答える 1

1

はい、これは完全に可能です。Building and delivery a table editor with SWT/JFace を読むことから始めることをお勧めします。このチュートリアルには、知っておくべきことがすべて含まれています。

大まかに言えば、コンテンツ モデルの最初のアイテムをデータ アイテムとは異なるものにする必要があります。これにはフィルター値が格納されます。次に、次のように s で編集サポートをセットアップしますTableViewerColumn(これは単なるスターターです。このコードは単独では機能しません)。

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
        }
    }       
});
于 2012-05-10T11:51:46.753 に答える