下面的代码不能正确显示文本,但是不能正确显示文本,而是显示Record类的toString()。
public class CodeCheckerPreferencePage extends PreferencePage
implements
IWorkbenchPreferencePage
{
public CodeCheckerPreferencePage() {
super( "Code checker statistics" );
}
@Override
protected Control createContents( Composite parent ) {
final TableViewer viewer =
new TableViewer(
parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL |
SWT.FULL_SELECTION | SWT.BORDER );
viewer.setContentProvider( ArrayContentProvider.getInstance());
viewer.setInput( Stats.getStats().getRecords());
final Table table = viewer.getTable();
table.setHeaderVisible( true );
table.setLinesVisible( true );
final TableViewerColumn colFile =
new TableViewerColumn( viewer, SWT.NONE );
colFile.getColumn().setWidth( 400 );
colFile.getColumn().setText( "File" );
colFile.setLabelProvider( new ColumnLabelProvider() {
@Override public String getText( Object element ) {
return ((Stats.Record)element).getFile(); }});
final TableViewerColumn colConsumed =
new TableViewerColumn( viewer, SWT.NONE );
colConsumed.getColumn().setWidth( 80 );
colConsumed.getColumn().setText( "Consumed ms" );
colConsumed.setLabelProvider( new ColumnLabelProvider() {
@Override public String getText( Object element ) {
return String.format( "%3d",
((Stats.Record)element).getConsumed()); }});
final GridData gridData = new GridData();
gridData.verticalAlignment = GridData.FILL;
gridData.horizontalSpan = 2;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
gridData.horizontalAlignment = GridData.FILL;
viewer.getControl().setLayoutData(gridData);
return table;
}
@Override
public void init(IWorkbench workbench) {/**/}
}
“文件”列中显示的文本为“ a.b.c.Stats$Record@750e313c”,“消费”列中没有显示文本。
我已经在“ getText”方法中设置了断点:它们从未到达过。
我的错误在哪里?
答案 0 :(得分:1)
在致电setInput
之前,您必须先设置与表有关的所有内容,然后移动
viewer.setInput( Stats.getStats().getRecords());
在方法末尾一行。