2009-03-11 5 views
2

나는 두 컨트롤, 또 다른 하나의 위에 구성 호버 컨트롤이있는 이클립스 플러그인을 쓰고 있어요 :JFace TreeViewer 또는 SWT Tree의 기본 크기를 파악하는 방법은 무엇입니까?

내가 쉽게 크기 힌트

TreeViewer를 계산할 수있는

하는 HTML 뷰어 (BrowserInformationControl) 트리가 포함되어 있습니다.

실제 내용으로 트리를 설정했습니다. 그러나, 나는 나무의 크기 나 한 번 렌더링 된 크기 힌트를 알아낼 수있는 방법을 찾을 수 없습니다.

+0

확인해 줄 링크와 대안을 추가했습니다. 확실하게, 사용하고있는 Eclipse의 정확한 버전으로 질문을 완료 할 수 있습니까? 그리고 목표 (Eclipse 버전의 관점에서)? – VonC

+0

위젯이 – andyczerwonka

답변

4

org.eclipse.swt.widgets.Tree의 API에 따르면,이은으로 수행해야합니다

public Point computeSize(int wHint, 
        int hHint, 
        boolean changed) 

제어의 적절한 사이즈가 가장 잘 표시 될 수있는 크기입니다.

너비 힌트 및 높이 힌트 인수를 사용하면 호출자가 "특정 폭을 감안할 때 컨트롤에서 모든 내용을 표시해야합니까?"와 같은 컨트롤 질문을 요청할 수 있습니다.
호출자가 특정 차원을 제한하고 싶지 않음을 나타내려면 상수 SWT.DEFAULT가 힌트로 전달됩니다.

변경된 플래그가 true의 경우, 리시버의 내용이 변경된 것을 나타내, 컨트롤을 포함한 레이아웃 매니저가 보관 유지하고 있던 캐쉬가 삭제 될 가능성이있다. 컨트롤의 크기가 변경되면 변경된 플래그는 false가되므로 레이아웃 관리자 캐시를 유지할 수 있습니다. Windows에서, computeSize()의 행동이 결함이라고


참고 :이 messagebug를 참조하십시오 앞으로 이클립스 3.4M1 및 고정.

computeSize()의 사용 예는 this message입니다.

getBound()의 사용은 또 다른 interesting alternative 일 수 있습니다.

+0

에 의해 관리되는 레이아웃에 따라 결정됩니다. 사용하고있는 것은 ... 불행히도, 너무 작은 점을 반환하는 Eclipse에 영향을 미치지 않는 것 같습니다 ... – Uri

+0

안녕하세요, 이것에 도움을 주셔서 감사합니다. 이 문제는 Mac 버전에서만 발생합니다. 창문에서 실행할 때, 내 코드는 매력처럼 작동합니다. 그들이 사용하는 두 개의 다른 UI 시스템을 가지고 있기 때문에 다른 Mac 배포판에서 확인하겠습니다. – Uri

+0

@ 주 : 잘 알고 있습니다. 나는 현재 등록 된 이클립스 버그가 있는지 확인하겠습니다. – VonC