标签提供程序未调用

问题描述 投票:-3回答:1

下面的代码不能正确显示文本和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) {/**/}
}

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

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

我的错误在哪里?

java eclipse-plugin swt jface
1个回答
1
投票

在调用setInput之前,你必须设置关于表的所有内容,所以移动

  viewer.setInput( Stats.getStats().getRecords());

行到方法的结尾。

© www.soinside.com 2019 - 2024. All rights reserved.