Java 如何在运行时增加文本框的高度?

Java 如何在运行时增加文本框的高度?,java,swt,jface,Java,Swt,Jface,如果文本框中的文本达到限制,我希望文本框高度增加。事实上,如果文本框的宽度最多可以容纳15个字符,那么在15个字符之后,我的文本框大小应该增加,以便我可以看到文本框的两行。我正在使用多行文本框。这是可能的。如果使用SWT.WRAP,当您超过文本小部件的线宽时,文本将自动在新行中继续。但高度将保持不变。因此,您必须在文本修改事件中计算它。设置文本小部件的新高度后,必须布局父级,以便计算文本小部件的新位置 final Text text = new Text(parent, SWT.MULT

如果文本框中的文本达到限制,我希望文本框高度增加。事实上,如果文本框的宽度最多可以容纳15个字符,那么在15个字符之后,我的文本框大小应该增加,以便我可以看到文本框的两行。我正在使用多行文本框。

这是可能的。如果使用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();
        }
    });

谢谢…谢谢你的帮助…以前我试过了,但在打包时眨眼更多,但现在没有眨眼。。。