2011-12-14 3 views
6

저는 경험이 풍부한 Java 프로그래머입니다. 그러나 Swing 초보자는 저와 함께하시기 바랍니다.JPopupMenu에서 포커스를 얻는 방법

키보드 포커스가있는 JPopupWindow를 사용하고 싶습니다. 화살표 키, escape (메뉴 닫기) 및 Enter (항목 호출)에 응답하고 싶습니다. 나는 KeyListener를 메뉴에 추가해야하고,이 모든 것을 직접 코딩해야하며, 표준이되어야하는 것처럼 보이는이 동작을 활성화하도록 설정할 수있는 일종의 "모드"가 있어야합니다.

JPopupMenus의 표준 스윙 튜토리얼 섹션에서는 니모닉 및 가속기 만 사용합니다. 나는 특히 그들을 원하지 않는다.

이것이 JPopupMenu의 곡식에 완전히 부합한다고 생각하기가 어렵습니다.

구현하고 싶은 것을 얻는 가장 좋은 방법은 무엇입니까?

답변

6

jpopupMenu.show(Component invoker, int x, int y)을 실행하면 원하는대로 자동으로 키보드에 응답합니다. 이 후 작동하지 않는 경우 다른 구성 요소 메뉴에서 초점을 멀리 날치기된다 즉 당신이 다른 문제를 해결하기 위해해야 ​​할 때해야하지 등

+0

hmm. showVisible (true) 대신 showVisible()을 사용하고 있었지만 setVisible()/ –

+0

에 대해 show()가 사용되지 않습니다. 사용했던 show (Component invoker, int x, int y) 메서드에 대해 이야기하고있었습니다. 내 코드. 혼란을 드려 죄송합니다. –

+0

그게 답입니다. 구성 요소에 제대로 묶여 있지 않았습니다. Trashgod의 회신도 그렇게해야했습니다. 둘 다 감사합니다. –

3

대신 KeyListener, 당신의 JPopupMenuAction 인스턴스를 추가하는 것이 좋습니다 것입니다. setComponentPopupMenu()을 사용하여 패널에 팝업을 추가하십시오.

+1

감사합니다. 위의 AKJ와 함께 귀하의 의견을 받아 보았습니다. –

+0

우수; 참고로 최근에 업데이트 된 예제 [here] (http://stackoverflow.com/a/5129757/230513)가 있습니다. – trashgod

관련 문제