Не работает 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.