我在 eclipse rcp 中面临一些问题,用于为特定单元格设置下拉列表。我的要求是在表格的第一行设置下拉菜单。并且该下拉列表也应该能够删除。drop 的另一件事应该能够过滤表中的内容。所以我的问题是
1)是否可以仅将下拉列表添加到特定的单元格或行?2)该过滤器可以充当表格的过滤器吗?3) 将下拉列表添加到表格单元格后,如何删除?
我在 eclipse rcp 中面临一些问题,用于为特定单元格设置下拉列表。我的要求是在表格的第一行设置下拉菜单。并且该下拉列表也应该能够删除。drop 的另一件事应该能够过滤表中的内容。所以我的问题是
1)是否可以仅将下拉列表添加到特定的单元格或行?2)该过滤器可以充当表格的过滤器吗?3) 将下拉列表添加到表格单元格后,如何删除?
是的,这是完全可能的。我建议您首先阅读使用 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
}
}
});