2010-03-16 5 views
1

안녕하세요 StackOverflow의 전문가SWT의 TabFolder : 이상한 그리기 행동

설명

나는 동적으로 생성 TabItems의 수와 TabFolder와 함께 SWT 페이지가 있습니다.

각 TabItem에서 Composite를 생성하고 TabItem.setControl()을 Composite로 설정합니다. 그런 다음이 컴포지트를 항목을 그리는 페이지로 사용합니다. 텍스트 상자 및 레이블을 포함한 컨트롤 집합을 그립니다.

첫 번째 기본 탭의 경우에는 정상적으로 작동합니다. 아무 문제 없습니다.

문제 나는 다음과 같은 문제가 첫 번째 탭 아니다 탭에

:

  • I가 드릴 수 없습니다 시각적/다음 편집을 변경 내 컨트롤의 사용 상태를.
  • 나는

내 컨트롤을 사용할보고 밖으로 회색으로 표시된 봐 내 요소의 텍스트 콘텐츠를 시각적으로 설정할 수 없습니다입니다.

하지만 마우스로 내용을 선택하고 Ctrl + C를 눌러 복사 할 수 있습니다. 그래서 텍스트 계약서가 있으며 편집 가능합니다.

시각적으로 업데이트되지 않았습니다.

모든 댓글은 appeciated, 코드에 대한 모든 요청, 예제가 제공되며 Welcommed 도움이됩니다.

업데이트 내가 시도

은 내가 내 컨트롤을 활성화하려는 코드에 디버그 루프를 제안했다. 이 결과였다 :

[주] 정보 [dk.viking.controller.LayerController] - f038.stklok 지금 [사실] 편집하고 [사실]

[주] 정보 [DK 수 있었다. viking.controller.LayerController] - 참 텍스트 {}

[주] INFO [dk.viking.controller.LayerController] - 참 복합 {}

[주] INFO [dk.viking.controller.LayerController] - true TabFolder {}

[main] INFO [dk.viking.controller.LayerController] - true 쉘 {바이킹 GUI}

답변

0

문제점의 원인을 발견했습니다.

TabItem의 복합 컨트롤을 채우는 데 사용 된 코드가 두 번 호출되었습니다.

그래서 모든 컨트롤이 복제되었고 컨트롤러에는 실제로 사용 된 컨트롤의 절반 만 활성 참조가있었습니다.

우리가 본 그림 동작을 정확하게 설명 할 수 없지만 이러한 호출 중 하나를 제거하면 문제가 사라집니다.

언젠가 내 문제가 다른 사람을 도울 수 있기를 바랍니다.

1

내 생각에 TabItem 자체가 비활성화되어 있습니다. 나는 텍스트 컨트롤을 취하고 그 상태를 수의 인쇄 한 후 부모 복합으로 계속 수행 코드의 어떤 장소에 루프를 추가하는 것이 좋습니다 같은 :

Control c = text; 
while (c != null) { 
     System.out.println(c.getEnabled()+" "+c); 
     c = c.getParent(); 
} 

이 경우이 당신에게 아이디어를 줄 것이다 문제의 원인.그렇지 않다면, Text.setEditable()에 중단 점을 설정하고 누가 그것을 호출하는지 확인하십시오.

[편집] 텍스트가 편집 가능하지만 표시되지 않는 경우 (회색으로 회색) getBackground()getForeground()이 반환하는지 확인하십시오. 어쩌면 누군가 둘 다 같은 색으로 설정했을 것입니다.

+0

내 문제는 내 컨트롤이 실제로 편집 가능하다고 생각합니다. 나는 UI가이 사실을 보여주고 있다고 생각하지 않는다. 내 마우스로 내용을 표시하고 CTRL + C로 복사 할 수 있지만 이렇게하는 동안 컨트롤은 항상 보이지 않게되고 내용, 마우스 또는 표시가 표시되지 않습니다. 간단히 회색으로 표시됩니다. – JesperGJensen

+0

이 동작은 편집 가능을 false (복사는 가능하지만 텍스트를 편집 할 수 없음)로 설정하면 기본값입니다. 누가 setEditable()을 호출하는지 확인하십시오. –

+0

setEditable (true) 호출이 1 회뿐입니다. 내 코드에서. 하지만 편집 할 수없는 콘텐츠의 문제는 아닙니다. 내용을 볼 수 없습니다. TextBox 안에 회색 배경 만 있습니다. 텍스트가 없습니다. 회색 코드는 내 코드에서 무엇을해도 상관 없습니다. – JesperGJensen