2013-04-02 9 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

관련 문제