2013-04-02 4 views
1

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

ответ

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(); 
     } 
    }); 
+0

спасибо ... за помощь .. Ранее я пробовал, но мигание больше, чем в упаковке, но теперь нет мигания ... – Rajesh

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