我想弄清楚JFace的结构元素是如何工作的。我做了以下简单的界面:
protected Control createContents(Composite parent)
{
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new FillLayout(SWT.HORIZONTAL));
TableViewer tableViewer = new TableViewer(container, SWT.BORDER | SWT.FULL_SELECTION);
table = tableViewer.getTable();
table.setLinesVisible(true);
table.setHeaderVisible(true);
tableViewer.setContentProvider(ArrayContentProvider.getInstance());
tableViewer.setInput(new String[][]{{"1", "2", "3"},{"1", "2", "3"},{"1", "2", "3"}});
TableViewerColumn tableViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE);
TableColumn tblclmnTest = tableViewerColumn.getColumn();
tblclmnTest.setWidth(58);
tblclmnTest.setText("Test1");
tableViewerColumn.setLabelProvider(new ColumnLabelProvider()
{
@Override
public String getText(Object element)
{
return super.getText(((String[])element)[0]);
}
});
TableViewerColumn tableViewerColumn2 = new TableViewerColumn(tableViewer, SWT.NONE);
TableColumn tblclmnTest2 = tableViewerColumn2.getColumn();
tblclmnTest2.setWidth(58);
tblclmnTest2.setText("Test2");
tableViewerColumn2.setLabelProvider(new ColumnLabelProvider()
{
@Override
public String getText(Object element)
{
return super.getText(((String[])element)[1]);
}
});
TableViewerColumn tableViewerColumn3 = new TableViewerColumn(tableViewer, SWT.NONE);
TableColumn tblclmnTest3 = tableViewerColumn3.getColumn();
tblclmnTest3.setWidth(58);
tblclmnTest3.setText("Test3");
tableViewerColumn3.setLabelProvider(new ColumnLabelProvider()
{
@Override
public String getText(Object element)
{
return super.getText(((String[])element)[2]);
}
});
return container;
}我所做的一切都类似于教程,但问题是:没有调用getText()方法。我通过将System.out.prinln插入到它们中找到了答案。结果看上去不像人们认为的那样:

我犯了什么错?
发布于 2014-05-15 08:16:59
在设置表列之前调用tableViewer.setInput --必须在定义所有列之后执行setInput。
https://stackoverflow.com/questions/23672145
复制相似问题