2012-02-24 3 views
1

'Eclipse Graphical Framework (GEF)'책과 포함 된 계보판 예제 (Draw2d 챕터)의 예를 통해 z 순서의 수치가 엉망이 된 것 같습니다. 그림을 드래그하거나 선택하면 z 순서가 변경되지 않으므로 드래그 된 그림을 다른 그림 아래에서 드래그 할 수있는 이상하거나 부 자연스러운 동작이 발생합니다.Eclipse Draw2d. IFigure에 대한 z 순서 변경하기

숫자를 선택하면 그림의 z 순서를 변경하여 차트의 맨 위 부분으로 이동하고 차트의 z 차원 맨 위에 표시되도록하고 싶습니다. 그렇게하는 가장 좋은 방법은 무엇입니까?

답변

0

draw2d의 그림의 z- 오더는 ​​더하기 순서 (상단의 마지막 그림)로 정의되거나 Figure.add에서 설정할 수 있습니다.

당신이 원하는 것을하는 가장 쉬운 방법은 아마도 부모에게서 그림을 제거하고 다시 추가하는 것입니다. 이것은 마지막으로 추가 된 숫자이기 때문에 상단 그림도됩니다.

+0

나는 그것을 시도하고 끌기가 멈추게한다. – Mr1159pm

+0

흥미 롭습니다. 어제 왜 이런 일이 일어 났는지 이해하려고 노력하면서 GEF를 디버깅하려고 시도했지만 이해할 수 없었습니다. 나는'EditPart'에 새로운'ResizableEditPolicy'를 설치하고'showSelection' 메소드를 오버라이드하고 부모'EditPart'에'reorderChild'를 호출하는 다른 방법을 발견했습니다, 그러나이 경우에는 끌기는 파괴된다 .... 오오 잘. 내가 뭔가를 찾으면 나는 다시 올릴거야. – vainolo

0

그림을 제거하고 다시 추가하면 이벤트 시스템이 엉망이되어 예를 들어 인 텐트를 드래그하면 다른 위치로 이동하려면 해당 인물을 앞으로 가져오고 끌기가 중단되고 더 이상 해당 인물에 대한 이벤트가 발생하지 않습니다. 상단에 그림을 가져 오려면, 다음 코드를 사용

final IFigure child = <figure you want to bring to the front>; 
final IFigure parent = child.getParent(); 
final List children = child.getParent().getChildren(); 
children.remove(child); 
children.add(child); 
child.repaint(); 

이 Z 순서의 프론에 특정 아이를 이동, 어린이의 원시 목록을 조작 할 수 있습니다. 그런 다음이 변경 사항을 보여주기 위해 아동의 페인트 칠이 발행됩니다. 이 솔루션은 Draw2d에만 해당되며 GEF와는 아무런 관련이 없습니다.