2017-08-09 69 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