Установка количества строк, которые будут отображаться для многострочного текста в SWT - PullRequest
10 голосов
/ 07 февраля 2012

Я использую следующие для TextArea

ToolBar bar = new ToolBar(box,SWT.NONE);
ToolItem item = new ToolItem(bar, SWT.SEPARATOR);
Text text = new Text(bar, SWT.BORDER | SWT.MULTI);
item.setWidth(width);
item.setControl(text);

GridData data = new GridData();
data.verticalAlignment = SWT.CENTER;
data.grabExcessHorizontalSpace = true;
data.grabExcessVerticalSpace = true;
text.setLayoutData(data);

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

Есть идеи, как установить количество отображаемых строк?

Спасибо.

Ответы [ 2 ]

29 голосов
/ 11 апреля 2013

Вы также можете использовать Text.getLineHeight () для определения высоты одной строки текста, для этого вам не нужен GC: * ​​1003 *

final Text text = new Text(container, SWT.BORDER | SWT.WRAP);
GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.heightHint = 5 * text.getLineHeight();
text.setLayoutData(gridData);
9 голосов
/ 07 февраля 2012

Вы можете установить высоту в пикселях:

/* Set the height to 75 pixels */
data.heightHint = 75;

Тем не менее, вы также можете установить высоту с точки зрения количества строк символов, но вы должны сделать некоторые хитрости, чтобы измерить высоту символов. Вам нужно будет построить графический контекст (GC) для измерения экстента текста.

Например:

GC gc = new GC(text);
try
{
    gc.setFont(text.getFont());
    FontMetrics fm = gc.getFontMetrics();

    /* Set the height to 5 rows of characters */
    data.heightHint = 5 * fm.getHeight();
}
finally
{
    gc.dispose();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...