设置swt中多行文本显示的行数

时间:2012-02-06 21:28:58

标签: java user-interface swt

我正在使用以下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 个答案:

答案 0 :(得分:29)

您还可以使用Text.getLineHeight()来确定单行文本的高度,您不需要GC:

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);

答案 1 :(得分:9)

您可以设置高度(以像素为单位):

/* 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();
}