2013-05-18 4 views
2

많은 타일 (800x800 텍스처)을 보유 할 사용자 지정 구성 요소 GameViewCanvas extends JPanel이 있습니다. 이제 GameViewCanvas에서 paint() 메서드를 재정의하여 변형 된 캔버스 (확대/축소, 회전 및 회전)에서 자식을 칠하도록합니다.스윙 : 변형 된 부모의 자식 구성 요소에 이벤트 위임

이제 MouseEvent 및 MouseMotionEvent와 같은 이벤트를 각 자식에게 위임하려고합니다. 물론 스윙은 자식이 실제 프레임에 어디에 있는지 알지 못합니다. 부모님의 getComponentAt 같은 메소드를 재정의 (override) 할 수있을 것이라고 생각했지만, 그런 행운은 없습니다. Swing이 아이들을 직접 루핑한다는 것을 알았습니까?

어쩌면 나는이 모든 잘못에 대해 갈 것이므로 조언을 부탁드립니다. 미리 감사드립니다.

+0

흥미로운 질문으로 알려진 자바 7의 공식적 부분이다. 나는 해결책을 모른다. 그러나 이것이 내 문제라면 Swing 소스 코드를 검색하여 이것이 단서를 줄 수 있는지 알아 보겠다. –

+1

Google 'JXLayer'(Java 7의 'JLayer'). 이것은 방금 물어 본 것과 같습니다. 그들이 인터넷에서 사라졌기 때문에 나는 여기에 모든 예제를 제공했다. (https://www.dropbox.com/s/re1hmvypp19oqy1/JXLayer-PBJar-Demo.zip) – MadProgrammer

답변

4

JXLayer을 살펴보십시오. 당신이 방금 물었던 바로 그 일을합니다.

Piet Blok의 훌륭한 사례가 있습니다. 그 중 일부는 그물에서 사라졌습니다. 이를 위해 here을 사용할 수 있도록했습니다.

pbjar 소스의 TestWrapped 데모를 살펴보십시오. 아마 가장 좋은 예가 될 것입니다.

enter image description here

PS - JXLayer은 1+, 지금 JLayer

+0

고마워! 이것은 위임 문제를 해결하는 것으로 보인다. 그러나 이제 LayerUI에서 변환을 수행하므로 JLayer 구성 요소의 경계에 따라 캔바스가 잘 리므로 축소 할 때 사용 가능한 공간의 일부만 실제로 그려집니다. – hauptbenutzer

+0

게시 한 예가 있습니까 (질문 업데이트). – MadProgrammer