Eclipse RCP - JFace对话框不显示按钮

时间:2015-05-12 13:52:24

标签: java swt eclipse-rcp jface

我正在尝试使用其中的TableViewer创建自定义对话框。它看起来像测试/预览,但当我实际运行我的应用程序时,底部的按钮消失。

从WindowBuilder内部运行时的测试/预览看起来像这样(在底部):

enter image description here

在应用程序中运行时,它看起来像这样:

enter image description here

以下是对话框的源代码:

@Override
protected Control createDialogArea(Composite parent) {
    Composite container = (Composite) super.createDialogArea(parent);
    container.setLayout(new GridLayout(1, false));

    Composite composite = new Composite(container, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    TableColumnLayout tcl_composite = new TableColumnLayout();
    composite.setLayout(tcl_composite);

    TableViewer tableViewer = new TableViewer(composite, SWT.BORDER | SWT.FULL_SELECTION);
    table = tableViewer.getTable();
    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    TableViewerColumn tableViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE);
    TableColumn tblclmnNewColumn = tableViewerColumn.getColumn();
    tcl_composite.setColumnData(tblclmnNewColumn, new ColumnPixelData(150, true, true));
    tblclmnNewColumn.setText("New Column");
    table.getShell().setSize(710, 400);
    return container;
}

1 个答案:

答案 0 :(得分:3)

不要在Shell上调用setSize,而是覆盖布局计算的大小,并使按钮位于对话框之外。

要控制表格网格数据上表格高度和宽度提示的大小:

GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
data.widthHint = 710;
data.heightHint = 400;
table.setLayoutData(data);