2017-09-06 14 views
1

JFaceを使用してカスタムダイアログを作成していますが、表示されない列に問題があります。ここに私のコードです。私が得るのは、列のないテーブルと、左の青い線です。これは、JFaceダイアログを拡張します。Eclipse - JFaceテーブルの列がカスタムダイアログに表示されない

@Override 
protected Control createDialogArea(Composite parent) 
{ 
    Composite container = (Composite) super.createDialogArea(parent); 

    container.setLayout(new GridLayout()); 

    addTableToDialog(container); 

    container.getShell().setSize(600, 400); 

    return container; 
} 


private void addTableToDialog(Composite container) 
{ 
    _tableViewer = new TableViewer(container, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER); 
    _tableViewer.getTable().setHeaderVisible(true); 
    _tableViewer.getTable().setLinesVisible(true); 
    _tableViewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    renderHeaders(); 
} 

ます。private void renderHeaders(){

int bound = 1; 

    for (int header = 0; header < _headers.length; header++) 
    { 
    String tableHeader = _headers[header]; 
    createTableViewerColumn(tableHeader, bound); 
    } 

} 


private TableViewerColumn createTableViewerColumn(String title, int bound) 
{ 
    final TableViewerColumn viewerColumn = new TableViewerColumn(_tableViewer, SWT.NONE); 
    final TableColumn tableColumn = viewerColumn.getColumn(); 

    tableColumn.setText(title); 
    tableColumn.setResizable(true); 
    tableColumn.setMoveable(true); 

    _tableColumnLayout.setColumnData(tableColumn, new ColumnWeightData(bound)); 

    return viewerColumn; 

} 
+1

ここで、 '_tableColumnLayout'を定義していますか?これが 'TableColumnLayout'の場合、テーブルをその子として持つ' Composite'に設定する必要があります。 –

+0

Gregさん、ありがとう、私はコンストラクタで 'TableColumnLayout'を定義していました。これをテーブルビューアを作成するときにローカルに定義するように変更しました。テーブルを保持する 'Composite'を作成するとき、レイアウトを' GridLayout() 'に設定していましたが、これを' TableColumnLayout'に変更しました。乾杯! –

答えて

0

以下は私のために、この問題を解決しました。 TableViewerを作成するときにTableColumnLayoutを定義し、これをテーブルを含むコンポジットのレイアウトとして設定します。

private void addTableToDialog(Composite container) 
{ 
    TableColumnLayout tableColumnLayout = new TableColumnLayout(); 

    Composite tableContainer = new Composite(container, SWT.NONE); 
    tableContainer.setLayout(tableColumnLayout); 
    tableContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    _tableViewer = new TableViewer(tableContainer, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER); 
    _tableViewer.getTable().setHeaderVisible(true); 
    _tableViewer.getTable().setLinesVisible(true); 

    renderHeaders(tableColumnLayout); 
} 
関連する問題