2015-09-29 2 views
0

У меня есть текст, который будет отображать разные данные разной длины. Сначала я использовал текстовое поле фиксированной длины. Но, очевидно, это не сработало. Затем я попытался получить длину текста, используя эту длину в качестве ширины текста, как это -Как определить длину текста в SWT в зависимости от текста для отображения?

textName = new Text(composite, SWT.BORDER); 
String myText = tree.getSelection()[0].getText(); 
int length = myText.length(); 
textName.setBounds(76, 28, length, 21); 
textName.setText(myText); 

Но я обнаружил, что длина строки и ширина поля Текста в SWT, совершенно разные. Итак, есть ли решение для этой цели? Очевидно, я могу установить большее значение в ширину. Но, я думаю, это не будет хорошим решением.

+0

Почему бы вам не создать функцию утилиты, которая обрезает строку по ширине? –

+0

Спасибо за комментарий. Но мне нужно отобразить весь текст, гибко увеличивая или уменьшая размер текстового поля. Прошу прощения, если я не ошибаюсь. –

+1

Могу ли я спросить, почему вы используете абсолютную калибровку виджетов? Что, если полная ширина «Текста» будет шире ширины его родителя? – Baz

ответ

0

Вы можете позволить объекту Text рассчитать размер фона по умолчанию.
Сначала установите текст, а затем вызвать computeSize, который вычисляет размер экрана в пикселах текстовой строки:

Text textName = new Text(composite, SWT.BORDER); 
String myText = tree.getSelection()[0].getText(); 
textName.setText(myText); 
Point size = textName.computeSize(SWT.DEFAULT, SWT.DEFAULT); 
textName.setBounds(76, 28, size.x, 21); 
+0

Спасибо большое !. Работает отлично. –

0

Вы можете вычислить размер строки с текущим размером шрифта и введите по:

GC gc = new GC(textName); 
Point textSize = gc.textExtent(myText); 
gc.dispose(); 

TextSize дает размер вашего текста в пикселях. Затем вы можете определить размер элемента управления Text для установки.

Смежные вопросы