如果文本框中的文本达到限制,我希望我的文本框高度增加。事实上,如果文本框的宽度最多可以容纳 15 个字符,那么在 15 个字符之后,我的文本框大小应该增加,以便我可以看到文本框的两行。我正在使用多行文本框。
问问题
378 次
1 回答
2
这个有可能。如果您使用 SWT.WRAP,当您超过文本小部件的行宽时,您的文本将自动在新行中继续。然而,高度将保持不变。因此,您必须在文本修改事件中计算它。为文本小部件设置新高度后,您必须布局父级,以便计算文本小部件兄弟的新位置。
final Text text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.WRAP);
text.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
Point textSize = text.computeSize(SWT.DEFAULT, SWT.DEFAULT);
Rectangle textTrim = text.computeTrim(0, 0, textSize.x,
text.getLineHeight());
final int textPadding = textTrim.height - text.getLineHeight();
text.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
int height = text.getLineCount() * text.getLineHeight()
+ textPadding;
text.setSize(text.getSize().x, height);
// need to layout parent, in order to change position of
// siblings
parent.layout();
}
});
于 2013-04-02T19:42:07.790 回答