这是使用LabelProvider定义在列中写入内容的常用方法
@Override
public String getColumnText(final Object element, final int iColumn) {
switch (iColumn) {
case 0:
..
case 1:
..
default:
...
}
}// getColumText()
这意味着我被赋予了列的id。 如何在LabelProvider中给出id的列的“标题”?
之类的东西String str = xxx.getColumnName( iColumn );
我找不到。
答案 0 :(得分:2)
这是使用ColumnLabelProvider
的示例。这使用TableColumnLayout
上设置的Composite
,TableViewer
只包含final Composite tableComp = new Composite(parent, SWT.NONE);
tableComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
final TableColumnLayout layout = new TableColumnLayout();
tableComp.setLayout(layout);
TableViewer viewer = new TableViewer(tableComp, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
Table table = viewer.getTable();
col = new TableViewerColumn(_viewer, SWT.LEAD);
col.setLabelProvider(new NameColumnLabelProvider());
col.getColumn().setText(Messages.title_filename);
layout.setColumnData(col.getColumn(), new ColumnWeightData(70));
col = new TableViewerColumn(_viewer, SWT.TRAIL);
col.setLabelProvider(new DurationColumnLabelProvider());
col.getColumn().setText(Messages.title_duration);
layout.setColumnData(col.getColumn(), new ColumnWeightData(30));
private static class NameColumnLabelProvider extends ColumnLabelProvider
{
@Override
public String getText(final Object element)
{
// return name column label
}
}
private static class DurationColumnLabelProvider extends ColumnLabelProvider
{
@Override
public String getText(final Object element)
{
// return duration column label
}
}
,如果调整控件的大小,这允许布局调整列大小。
{{1}}
答案 1 :(得分:0)
好吧,好笑我从来没有读过你的答案greg :(非常感谢:) 但是,您的建议要求您事先知道哪些列。我做了什么创建了dinamically列,这些列被添加到树视图中。
我最终做了什么: - 外部管理id / label
的地图商品: -Simple:独立于Eclipse / JFace,易于理解,便于携带。 劣品: - 好吧,每当我添加一个列时,我必须在地图中添加它,同样删除。但是一旦完成,很明显(我将来添加列的其他方法(原则上不需要,因为我没有通用),必须考虑在地图中注册它们。
- 将它封装在JFace中会很好。
答案 2 :(得分:0)
第1步: 使用私有属性制作你自己的labelprovider" TableViewer引用了TableViewer"。 使用此属性构建构造函数。
现在你可以在getColumnText-method中引用tableviewer:
@Override
public String getColumnText(Object element, int columnIndex) {
String columnTitle = referencedTableViewer.getTable()
.getColumn(columnIndex).getText();
...
第2步: 构建TableViewer,参考TableViewer
实例化labelprovider