Изменение размера этикетки в соответствии с содержанием - PullRequest
0 голосов
/ 16 апреля 2019

Это сценарий: Я создаю виджет, который будет отображать текст, а затем индикатор выполнения. Для этого создайте Composite

container = new Composite(parent, SWT.BORDER);
container.setLayoutData(layoutData);
container.setLayout(new GridLayout(1, true));

К этому я добавляю Label

messageText = new Label(container, SWT.WRAP | SWT.BORDER | SWT.CENTER);
messageText.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));

с последующим составным удерживанием индикатора выполнения:

  final Composite progressContainer = new Composite(container, SWT.BORDER);
progressContainer
    .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

Это результат:

enter image description here

Что я ожидаю, так это того, что ярлык будет расти, чтобы иметь возможность содержать полный текст. Я пытался следовать инструкциям этого поста , однако, я должен что-то упустить, так как не могу достичь желаемого поведения.

Спасибо за ввод.

1 Ответ

1 голос
/ 16 апреля 2019

Указанное вами GridData использует все доступное горизонтальное пространство, но вертикальное пространство использует только начальный размер, рассчитанный для элемента управления.

Чтобы использовать все доступное вертикальное пространство, используйте:

messageText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

Обратите внимание, что вы также указываете, что progressContainer также должен захватывать все доступное пространство - это, вероятно, не то, что вы хотите, поэтому вам, возможно, придется изменить это. Возможно:

progressContainer.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));

Если вы хотите изменить размер текста сообщения при изменении текста, вам нужно позвонить

container.layout(true);

после установки нового текста для принудительного пересчета размеров. Используйте ваши исходные значения GridData.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...