Динамически добавлять столбцы в JFace TableViewer

В рамках моего проекта я читаю в файле CSV и хочу отобразить его в SWT, используя JFace TableViewer, Очевидно, что количество столбцов может варьироваться от файла к файлу, поэтому я не знаю, сколько столбцов есть заранее.

Мой код, который читает файл, выглядит примерно так:

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 ответов

Другие вопросы по тегам