重新设置TableViewer的列失败

孤身走我路 2016-07-19 04:27:53
重新设置TableViewer的列,显示为空
现在需要动态更新TableViewer的列和里面的数据,设置了函数来更新
函数如下:columnNames是列名称,compareResult是显示的数据
int aa = table.getColumnCount();这句代码获取出来的行数是对的,写入数据也不报错,就是显示出来都是空的
	public void setTableContent(String[] columnNames, ArrayList<Object[]> compareResult)
{
Table table = tableViewer.getTable();
table.removeAll();

for (TableColumn tableColumn : table.getColumns())
tableColumn.dispose();

TableLayout tableLayout = (TableLayout) table.getLayout();
for( int i=0; i<columnNames.length; i++)
{
tableLayout.addColumnData(new ColumnPixelData(100));
TableColumn newColumnTableColumn = new TableColumn(table, SWT.NONE);
newColumnTableColumn.setText(columnNames[i]);
}

/*table.redraw();
tableViewer.refresh();*/

/*this.tableViewer.setContentProvider(new TableViewerContentProvider());
this.tableViewer.setLabelProvider(new TableViewerLabelProvider());
CellEditor[] arrayOfCellEditor = new CellEditor[columnNames.length];
for( int i=0; i<columnNames.length; i++)
arrayOfCellEditor[i] = new TextCellEditor();
this.tableViewer.setCellEditors(arrayOfCellEditor);
this.tableViewer.setColumnProperties(columnNames);*/

for (int row=0; row<compareResult.size(); row++)
{
TableItem item = new TableItem(table, SWT.NONE);
int aa = table.getColumnCount();
for( int col=0; col<aa; col++)
{
System.out.println(compareResult.get(row)[col].toString());
item.setText(col, compareResult.get(row)[col].toString());
}
}
}

...全文
228 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gere Yeung 2016-07-21
  • 打赏
  • 举报
回复
ContentInputProvider可以直接用ArrayContentProvider, TableViewer需要的是ViewerColumn 不是TableColumn.
rangq1 2016-07-21
  • 打赏
  • 举报
回复
设置数据源的方式不对吧, 更新数据只需要更新Vector后再调用一下tableViewer.setInput(Vector). 然后tableViewer.refresh();就可以更新一览数据了
孤身走我路 2016-07-20
  • 打赏
  • 举报
回复
引用 2 楼 wenzee 的回复:
有没有设置: ICellLabelProvider 和 CententProvider
class TableViewerContentProvider implements IStructuredContentProvider { private final Object[] empty = new Object[0]; public void dispose() {} public void inputChanged(Viewer arg0, Object arg1, Object arg2) {} public Object[] getElements(Object arg0) { if (arg0 instanceof Vector) { return ((Vector<?>)arg0).toArray(); } return empty; } } class TableViewerLabelProvider extends LabelProvider implements ITableLabelProvider { public Image getColumnImage(Object element, int column) { return null; } public String getColumnText(Object element, int arg1) { return element == null ? "" : element.toString(); } } 这样设置了, 在createPartControl()里设置列示可以显示出来的
Gere Yeung 2016-07-20
  • 打赏
  • 举报
回复
有没有设置: ICellLabelProvider 和 CententProvider
孤身走我路 2016-07-19
  • 打赏
  • 举报
回复
没的人啊。。。

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧