在我的项目中,我正在阅读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++));
我不认为这是一个特别好的解决方案,而且我可能错过了所有树木的森林,因为这对于更清洁的解决方案来说感觉就像一个问题。
提前致谢!