Как правильно настроить этот GridLayout? - PullRequest
0 голосов
/ 07 февраля 2019

К сожалению, я далеко не эксперт в SWT и RCP, но я действительно старался изо всех сил здесь ... Я не могу понять, как настроить виджеты, чтобы получить этот макет (просто экран Photoshopped, никогда не работалвот так):

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 более 2 дней ... Пожалуйста, помогите мне:)

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете создать всю композицию с одним GridLayout и 3 столбцами, используя горизонтальный интервал 3 на таблице.Это не дает вам желаемого макета экрана, потому что элементы управления контрольной датой и кнопки внизу будут выровнены в столбцах.

Попробуйте вместо этого использовать 3 композитных элемента

  • контрольная дата: макет строки
  • таблица: макет заполнения
  • список кнопок: макет строки
...