2011-09-24 6 views
1

LayeredPane에는 JPanel 두 개가 있는데, 모두 JFrame입니다. JPanel은 모두 setOpaque(false)으로 투명하게 설정됩니다. 그러나 투명 패널을 (차이가 있다면, 상단에) 마우스 이벤트를 캡처하고 싶습니다. 이게 가능합니까, 아니면 그냥 기초가되는 JFrame에서해야합니까? (이것은 분명히 JFrame에서 캡처 할 수 있으며 투명 프레임에서 이벤트를 캡처하는 것이 더 논리적입니다.)Java : 투명 JPanel의 MouseEvent

답변

4

JPanel에 연결된 MouseListener가있는 마우스 이벤트를 캡처 할 수 있으며 MouseListeners가 추가 된 구성 요소와 원래 JPanel 이상에있는 구성 요소는 방해받지 않습니다. 이것은 GUI의 가장 단순한 작은 테스트 클래스를 작성하기에 완벽한 상황처럼 보입니다. GUI의 종소리와 호루라기가 없지만 문제와 희망 솔루션을 보여줍니다.

또한주의가 산만 해지는 경우를 제외하고는 투명성이 전혀 영향을 미치지 않습니다.

+1

* "주의가 산만 해지면 투명도가 전혀 영향을 미치지 않습니다."* 처음에는 패널을 클릭하기가 더 어려워졌습니다. ;) IMO는 투명도를 높이는 반면 유용성은 감소시킵니다. –