2016-09-09 3 views
0

コンポジットテーブルの列を作成しようとするとエラーが表示されますか?JFace + SWTコンポジットテーブルビューア

エラーは次のとおりです。 Error Come Arrayindexout of Bound image1

私はコンポジット取るときに、アプリケーションが起動しない: Application does not start when I take Composite image2

import org.eclipse.jface.layout.TableColumnLayout; 
import org.eclipse.jface.viewers.TableViewer; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.GridData; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.ui.IMemento; 
import org.eclipse.ui.part.ViewPart; 

public class Theartview extends ViewPart implements Serializable { 

    public void createPartControl(Composite parent) { 

    Composite tableComposite = new Composite(parent, SWT.NONE); 
    TableColumnLayout tableColumnLayout = new TableColumnLayout(); 
    tableComposite.setLayout(tableColumnLayout); 
    tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, 
      true)); 
    } 
} 
+0

ViewPartは、SWT + JFaceだけでなくRCPにある可能性のあるEclipseプラグインを意味します。 –

答えて

1

すべてのコードがやっているがために、レイアウトを設定している エラーがバウンドのArrayindexoutを、是非しますテーブルはTableColumnLayoutを使用しています。このレイアウトが管理するテーブルを実際に作成するために何もしていません。この状態でコードを実行すると、テーブルが見つからないためにクラッシュします。

あなたは最低でもこのようなものかもしれない、TableViewerを作成するためのコードを追加する必要がありますので:私はちょうどここに簡単なsetInputを示している

Composite tableComposite = new Composite(parent, SWT.NONE); 
TableColumnLayout tableColumnLayout = new TableColumnLayout(); 
tableComposite.setLayout(tableColumnLayout); 
tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

TableViewer viewer = new TableViewer(tableComposite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); 
viewer.setContentProvider(ArrayContentProvider.getInstance()); 
// TODO viewer.setLabelProvider(new ViewLabelProvider()); 
viewer.setInput(new String[] {"One", "Two", "Three"}); 

、あなたはこれを変更する必要があります。おそらくラベルプロバイダを定義する必要があります。

この非常に単純なテーブルは列を使用していません。このレイアウトを最大限に活用するには、TableViewerColumnを使用して列を定義する必要があります。

注:ViewPartは、プラグイン(これはスタンドアロンRCPの一部である可能性があります)のEclipseビューです。プレーンなJFace + SWTアプリケーションではありません。

関連する問題