在JFace TableViewer中动态添加列

时间:2014-03-15 23:14:34

标签: dynamic swt jface provider tableviewer

在我的项目中,我正在阅读CSV文件,并希望使用JFace TableViewer在SWT中显示它。显然,列数可能因文件而异,所以我不知道预先有多少列。

我的代码读取文件,看起来像这样:

final CSVDataInput in = new CSVDataInput(comboLocation.getText(), separators[selection]);
final Iterator<String[]> it = in.iterator();
final List<String[]> data = new ArrayList<String[]>();

while (it.hasNext()) {

    data.add(it.next());
    count++;

}

关于以干净的方式将这些数据传递给TableViewer,我现在有点迷失了。我想知道是否有针对此类案例的预定义内容和/或标签提供商。这对我来说似乎很基本,但到目前为止我找不到适合我的情况的任何东西。我用ITableLabelProvider摆弄了很长一段时间,但这似乎不对。

那么解决这个问题的最佳方法是什么?

我现在正在做的方法是定义自定义ColumnLabelProvider。这看起来像这样:

private class CSVColumnLabelProvider extends ColumnLabelProvider {

    private int column;

    public CSVColumnLabelProvider(int column) {

        this.column = column;

    }

    @Override
    public String getText(Object element) {

        return ((String[]) element)[column];

    }

}

然后我必须为每一列分配一个这个类的实例,例如:

tableViewerColumn.setLabelProvider(new CSVColumnLabelProvider(column++));

我不认为这是一个特别好的解决方案,而且我可能错过了所有树木的森林,因为这对于更清洁的解决方案来说感觉就像一个问题。

提前致谢!

0 个答案:

没有答案