Java SWT: setSize () не работает на элементе управления Button - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть ArrayList кнопок, и я пытаюсь установить для всех кнопок одинаковый размер последней кнопки.

Это мой код:

ArrayList <Button> buttons = new ArrayList<Button>();
Composite numbersComposite = new Composite(composite, SWT.NONE);
numbersComposite.setLayout(new GridLayout(5, true));

for (int i=0; i<=49; i++) { 
    Button b = new Button(numbersComposite, SWT.TOGGLE);
    b.setText(""+i);
    buttons.add(b);
}

for (Button b : buttons) {
    b.setSize(buttons.get(buttons.size()-1).getSize());
}

Что-тонеправильно, потому что не все кнопки имеют одинаковый размер.Есть ли проблемы с методом setSize для кнопок со стилем TOGGLE?

Спасибо

РЕДАКТИРОВАТЬ: ОК. Я вижу, что buttons.get(buttons.size()-1).getSize() дает точку с 0,0значение.Почему?

РЕДАКТИРОВАТЬ 2: Я пытался с этим кодом, но ничего не происходит!не все они имеют одинаковый размер ... почему?

Point point = new Point(20, 20);
for (Button b : buttons) {
    b.setSize(point);
}

1 Ответ

0 голосов
/ 23 сентября 2018

Вы смешиваете макеты с абсолютным позиционированием, что не работает.

setSize будет работать только тогда, когда вы не используете макеты.

Если вы используете макеты (чтообычно это лучший выбор), тогда вы должны установить соответствующие данные макета для компонентов, которые вы хотите отобразить.

Поскольку вы используете GridLayout для родителя Composite, его дочерние элементы должны установить GridData в качестве макетаданные;например, это GridData заставит кнопки использовать все доступное пространство в родительском Composite:

for (int i = 0; i <= 49; i++) {
    Button b = new Button(numbersComposite, SWT.TOGGLE);

    // set the layout data
    GridData buttonLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    b.setLayoutData(buttonLayoutData);

    b.setText("" + i);
    buttons.add(b);
}

Посмотрите на конструкторы GridData, чтобы увидеть, какие другие опции у вас есть.

Смотрите здесь, чтобы узнать больше о макетах в SWT: http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/index.html

...