ScrolledComposite (sc) 내에 복합 (innerComposite)이 있습니다. 런타임시 추가 UI 구성 요소를 추가 할 수 있습니다. 그래서 아래의 코드를 사용하여 추가 UI 구성 요소가 sc를 "오버플로"하는 경우 스크롤 할 수 있도록 sc의 최소 크기를 설정합니다.SWT - ScrolledComposite 내의 여러 줄 텍스트 필드에 대한 computingSize
sc.setMinSize(
innerComposite.computeSize(
innerComposite.getSize().x, SWT.DEFAULT
)
);
이 sc/innerComposite 내의 SWT 멀티 라인 텍스트 필드에 한 가지 문제가 있습니다.
textBox = new org.eclipse.swt.widgets.Text(parent, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);
나는이 멀티 라인 텍스트 필드에 긴 텍스트를 입력
는, 수직 스크롤이 (내가 원하는 무엇이다!)가 나타납니다. 그러나 위 코드를 호출하여 크기를 다시 계산하고 sc.setMinSize()를 설정하면 여러 줄 텍스트 필드의 높이가 입력 된 텍스트의 길이에 맞게 확장됩니다. 이것은 내가 원하는 것이 아닙니다. 이 높이를 스크롤 막대에 그대로두고 입력 한 텍스트에 맞게 크기를 조정하지 않기를 바랍니다.computeSize
은 아이들이 의 크기로 크기 조정하도록합니다. 세로줄을 스크롤 할 수 있기 때문에 여러 줄 텍스트 필드에이 작업을 수행하지 않아도됩니다.
어떻게 이런 일이 일어나지 않도록 할 수 있습니까?
조금 연구했는데이 말은 절망적이라고 말해야합니다. 서브 클래 싱이 허용되지 않기 때문에'Text'의'computeSize' 메소드를 오버라이드 할 수 없습니다. 'Layout'의'computeSize' 메소드는 ** 거대한 ** 메소드 인'layout'을 호출합니다. 내가 볼 수있는 유일한 가능성은이'layout' 메소드 (그것의 자식을 반복)를 오버라이드하고'SWT.MULTI' 스타일로'Text'를 무시하는 것입니다. – Baz