2017-08-09 6 views
1

こんにちは、私はJavaの初心者で、テーブルのサイジングに問題があります。Java - テーブルのサイズが変更されない

first pictureでは、サイズ調整が非常に良好であることがわかりますが、ボタンをクリックすると、テーブルのサイズは小さくなりますpicture two)。

ご協力いただきありがとうございます:)

protected void createContents() { 

    ... 

    gridData = new GridData(); 
    gridData.horizontalAlignment = SWT.FILL; 
    gridData.horizontalSpan = 2; 
    gridData.grabExcessHorizontalSpace = true; 

    table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION); 
    table.setLayoutData(gridData); 
    table.setHeaderVisible(true); 
    table.setLinesVisible(true); 

    TableColumn columnProduct = new TableColumn(table, SWT.NONE); 
    columnProduct.setText("Product"); 
    TableColumn columnKey = new TableColumn(table, SWT.NONE); 
    columnKey.setText("Key"); 

    for (int i = 0; i < 2; i++) 
    { 
     table.getColumn(i).pack(); 
    } 

    shell.pack(); 
    shell.open(); 
} 

@Override 
public void mouseDown(MouseEvent e) { 
    TableItem tItem = new TableItem(table, SWT.FILL); 
    String[] data = { txtProduct.getText(), txtKey.getText()}; 
    tItem.setText(data); 
    table.pack(); 
} 
+1

これが 'table.pack();'の動作です。期待される成果は? –

+0

私は、右側に列の自動サイズ(空き領域を使用する)と、テーブルの自動サイズを下にしたいとします。 [例](http://imgur.com/mQ7dKBr) – BlackMorokei

答えて

2

あなたが内容に基づいて自動サイズに列をしたい場合は、列ではなく、テーブルの上にpack()を使用します。

for (TableColumn column : table.getColumns()) { 
    column.pack(); 
} 

あなたの場合テーブルに追加の垂直スペースを使用し、それに応じてgridDataを設定します。

... 
gridData = new GridData(); 
gridData.horizontalAlignment = SWT.FILL; 
gridData.horizontalSpan = 2; 
gridData.grabExcessHorizontalSpace = true; 

// add these: 
gridData.verticalAlignment = SWT.FILL; 
gridData.grabExcessVerticalSpace = true; 
+0

ご協力ありがとうございます。それは私のためにかなりうまくいった:D – BlackMorokei

関連する問題