Не работает TableViewer.refresh

Два события, которые я добавляю к средству просмотра таблицы, не отображаются на экране.

Вот мой код для создания таблицы просмотра, таблицы и одного столбца

TableViewer tableViewer = new TableViewer(composite, SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION); table = tableViewer.getTable(); table.setHeaderVisible(true); table.setLinesVisible(true); fd_btnNewButton.left = new FormAttachment(table, 6); FormData fd_table = new FormData(); fd_table.top = new FormAttachment(eventLabel, 6); fd_table.left = new FormAttachment(0, 10); fd_table.right = new FormAttachment(100, -100); fd_table.bottom = new FormAttachment(eventLabel, 387, SWT.BOTTOM); table.setLayoutData(fd_table); TableColumn tableColumn = new TableColumn(table,SWT.LEFT); String[] column_names = new String[]{"Events"}; tableColumn.setText(column_names[0]); tableViewer.setColumnProperties(column_names); tableViewer.setLabelProvider(new ContinuousIntegrationLabelProvider()); tableViewer.setContentProvider(new ContinuousIntegrationContentProvider());

Таблица создается успешно. Затем я устанавливаю входные данные, а затем обновляю таблицу...

events.add("Build"); //events is an ArrayList<string> events.add("JUnit Tests"); tableViewer.setInput(events); tableViewer.refresh();
</string>

И вот мои методы моего провайдера:

/** * label provider for the table */
public class ContinuousIntegrationLabelProvider extends LabelProvider implements ITableLabelProvider { /** * image for the column */ public Image getColumnImage(Object element, int index){ switch(index){ case 0: if(model.getJenkinsJob() == null){ return Images.getImage(Images.WARNING); } else{ return null; } default: return null; } } /** * returns the correct value for each column */ public String getColumnText(Object element, int index){ switch(index){ case 0: return (String) element; default: return ""; } }

И вот мой контент-провайдер:

/** * content provider for the table */
public class ContinuousIntegrationContentProvider implements IStructuredContentProvider { @SuppressWarnings("unchecked") public Object[] getElements(Object inputElement) { ArrayList<string> data = (ArrayList<string>) inputElement; return data.toArray(); } public void dispose() { } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { }
}
</string></string>
1 ответ

Мне просто нужно было установить ширину в столбце таблицы, и тогда все будет отображаться.

Вот часть кода, который я изменил:

TableColumn tableColumn = new TableColumn(table, SWT.LEFT); String[] column_names = new String[]{"Events"}; tableColumn.setText(column_names[0]); tableColumn.setWidth(352);

licensed under cc by-sa 3.0 with attribution.