2009-09-14 6 views
0

GLCanvas에서 그릴 응용 프로그램을 사용하고 있습니다. 나는 그 위에 "떠 다니는 메뉴"를 추가하고 싶습니다. (스윙에서 유리창에 메뉴를 추가하여 할 것입니다.) GLCanvas는 Container를 확장하지 않으므로이를 수행하기위한 제안 된 방법은 무엇입니까?GLCanvas에 구성 요소 추가

답변

0

GLCanvas inherits from java.awt.Component이므로 GLCanvas를 JFrame에 추가 할 때 포함하는 JFrame에서 유리판을 사용할 수 있습니다.

또는 원하는 시각적 효과에 따라 장면이 GLCanvas에서 렌더링 된 후에 glOrtho에 GL 호출을 추가 한 다음 GL 자체의 프리미티브를 사용하여 장면 위에 메뉴를 그릴 수 있습니다. (그럼에도 불구하고 자신의 콜백 동작 등을 조작하는 걸 꼼짝 못하게 될 것입니다 ... 당신이 그것에 들어가기를 원하는지는 확실하지 않습니다.)

+0

캔버스가 실제로 중량이 큰 구성 요소이기 때문에 실제로 유리판 위에 그려 지므로 유리판을 사용할 수 없다고 생각합니다. 그리고 당신이 맞습니다. 저는 제 자신의 콜백 메카니즘을 구현하고 GL 호출을 직접하기를 원하지 않습니다. –

+0

그럼 스윙 구성 요소를 헤비급으로 설정하면 여전히 작동하지 않습니까? 흠 ... 지금 시도해 보니 다음과 같이하면 glcanvas에서 스윙 풀다운 메뉴를 문제없이 렌더링 할 수 있습니다. JPopupMenu.setDefaultLightWeightPopupEnabled (false); ToolTipManager.sharedInstance(). setLightWeightPopupEnabled (false); (JFrame을 사용하기 전에이 작업을 수행해야합니다.) – Decker

0

팝업 메뉴에 대해 이야기하고 있습니까? MouseListener를 MouseListener에 추가하고 MouseEvent.isPopupTrigger()를 확인한 다음 JPopupMenu를 만듭니다 (중량급 구성 요소 위에 표시하려는 경우 setLightweightPopupEnabled()를 호출하여 MouseListener를 GLCanvas에 추가 할 수 있습니다 거짓) JPopupMenu를 표시 한 다음 JPopupMenu에서 show (glCanvas, x, y)를 호출합니다.

+0

안녕하세요, 팝업 메뉴에 대해 이야기하는 것이 아닙니다. 메뉴가 잘못된 설명이었을 수 있습니다. 플로팅 패널에 가깝습니다. 지금은 고정 된 위치에있을 수 있습니다. 구성 요소를 겹치게하고 GLCanvas와 겹치는 Panel (awt)을 가질 수있는 레이아웃 관리자를 사용해야 할 것입니다. –

관련 문제