猿问

未调用标签提供程序

以下代码无法正确显示文本和 long,而是 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) {/**/}

}

“文件”列中显示的文本为“abcStats$Record@750e313c”,“已使用”列中不显示任何文本。


我在“getText”方法中设置了断点:它们永远不会到达。


我的错误在哪里?


潇湘沐
浏览 122回答 1
1回答

慕森卡

你必须在打电话之前设置好桌子的一切,setInput所以移动  viewer.setInput( Stats.getStats().getRecords());行到方法的末尾。
随时随地看视频慕课网APP

相关分类

Java
我要回答