如何正确配置此GridLayout?

问题描述 投票:0回答:1

我很遗憾没有成为SWT和RCP的专家,但我真的在这里努力了......我无法弄清楚如何配置小部件以获得这种布局(只是一个Photoshop屏幕,从未这样做过) :

expected screen

如果我将GridLayout的列号设置为2,这就是我得到的:

2 columns

这是错误行中的刷新和黑名单按钮,但至少一切都是可见的......

如果我将GridLayout的列号设置为3,这就是我得到的:

3 columns

这完全搞砸了......大多数小部件都被推到了可见区域之外。 DatePicker,Refresh,Whitelist和Calculate按钮不可见,它们位于右侧的某个位置。

这是此屏幕区域的代码部分:

resultingProductsGroup = new Group(propProdGroup, SWT.NONE);
final GridData gd_resultingProductsGroup = new GridData(SWT.FILL,
        SWT.CENTER, true, false);
gd_resultingProductsGroup.widthHint = 240;
resultingProductsGroup.setLayoutData(gd_resultingProductsGroup);
resultingProductsGroup.setText("Resulting products");
final GridLayout gridLayout_4 = new GridLayout();
gridLayout_4.numColumns = 2;
resultingProductsGroup.setLayout(gridLayout_4);

Label refDateLabel = new Label(resultingProductsGroup, SWT.NONE);
refDateLabel.setText("Reference date:");

refDateInput = new DateInput(resultingProductsGroup, SWT.BORDER);
refDateInput.setLayoutData(new GridData());

refDateInput.setValue(new Date());

calculateProductsButton1 = new Button(resultingProductsGroup, SWT.NONE);
setupImageButton(calculateProductsButton1, Images.getButtonRefresh());
calculateProductsButton1.setLayoutData(new GridData());
GridDataFactory.swtDefaults().hint(18, 18).applyTo(
        calculateProductsButton1);

resultingProductsTable = new TableListWidget<Product>(
        resultingProductsGroup, SWT.BORDER, ListWidgetMode.MULTI);
resultingProductsTable.setLinesVisible(true);
resultingProductsTable.setHeaderVisible(true);
final GridData rpTableProperty = new GridData(SWT.FILL, SWT.FILL, true,
        true, 3, 1);
resultingProductsTable.setLayoutData(rpTableProperty);

GridDataFactory.swtDefaults().hint(230, 240).applyTo(
        resultingProductsTable);


setupResultingProductsTableColumns();
resultingProductsTable.sortByComparator(new Comparator<Product>() {
    @Override
    public int compare(Product o1, Product o2) {
        return o1.getPartNum().getExternalId().compareTo(
                o2.getPartNum().getExternalId());
    }
});
resultingProductsTable.addOpenListener(new IOpenListener() {
    @Override
    public void open(OpenEvent event) {
        doResultingProductsTableOpen();
    }
});

calculateProductsButton2 = new Button(resultingProductsGroup, SWT.NONE);
calculateProductsButton2.setText("Calculate");

whitelistAddButton = new Button(resultingProductsGroup, SWT.NONE);
whitelistAddButton.setText("Whitelist");
whitelistAddButton.addSelectionListener(new SelectionAdapter() {
    @Override
    public void widgetSelected(final SelectionEvent e) {
        doAddToWhitelist();
    }
});

blacklistAddButton = new Button(resultingProductsGroup, SWT.NONE);
blacklistAddButton.setText("Blacklist");
blacklistAddButton.addSelectionListener(new SelectionAdapter() {
    @Override
    public void widgetSelected(final SelectionEvent e) {
        doAddToBlacklist();
    }
});

我在这里看不到什么?我已经坚持使用这个GUI bug超过2天了...请帮助我:)

java swt eclipse-rcp
1个回答
0
投票

您可以使用一个GridLayout和3列设计整个复合,同时在表上使用3的水平跨度。但是,这并没有为您提供所需的模拟屏幕,因为底部的参考日期控件和按钮将按列对齐。

尝试使用3个复合材料

  • 参考日期:行布局
  • 表:填充布局
  • 按钮列表:行布局
© www.soinside.com 2019 - 2024. All rights reserved.