未调用标签提供程序
Label provider not called
下面的代码没有正确显示文本和长度,但是记录的 toString() class。
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) {/**/}
}
"File"栏中显示的文字是"a.b.c.Stats$Record@750e313c","Consumed"栏中没有显示文字。
我在方法中设置了断点"getText":它们永远不会到达。
我的错误在哪里?
您必须在 调用 setInput
之前设置有关 table 的所有内容,因此移动
viewer.setInput( Stats.getStats().getRecords());
行到方法的末尾。
下面的代码没有正确显示文本和长度,但是记录的 toString() class。
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) {/**/}
}
"File"栏中显示的文字是"a.b.c.Stats$Record@750e313c","Consumed"栏中没有显示文字。
我在方法中设置了断点"getText":它们永远不会到达。
我的错误在哪里?
您必须在 调用 setInput
之前设置有关 table 的所有内容,因此移动
viewer.setInput( Stats.getStats().getRecords());
行到方法的末尾。