1
텍스트 상자의 텍스트가 한도에 도달하면 텍스트 상자 높이를 늘려야합니다. 사실, 텍스트 상자의 너비가 최대 15자를 수용 할 수 있다면, 15 자 이후에 텍스트 상자의 두 줄을 볼 수 있도록 내 텍스트 상자 크기가 증가해야합니다. 멀티 라인 텍스트 박스를 사용하고 있습니다.런타임시 텍스트 상자 높이를 늘리는 방법은 무엇입니까?
텍스트 상자의 텍스트가 한도에 도달하면 텍스트 상자 높이를 늘려야합니다. 사실, 텍스트 상자의 너비가 최대 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();
}
});
감사합니다 ... 이전에 시도했지만 깜박이는 동안 더 이상 깜박하지 않지만 깜박임 ... – Rajesh