【问题标题】:Java - Table won't resizeJava - 表格不会调整大小
【发布时间】:2017-08-09 18:55:42
【问题描述】:

您好,我是 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();
}

【问题讨论】:

  • table.pack(); 就是这样做的。您的预期结果是什么?
  • 我希望列自动调整到右侧(使用可用空间)并且表格自动调整到底部。 Example

标签: java datagrid resize swt


【解决方案1】:

如果您希望列根据内容自动调整大小,请在列上使用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;

【讨论】:

  • 感谢您的帮助。这对我来说效果很好:D
猜你喜欢
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 2014-04-28
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-30
相关资源
最近更新 更多