Java Swing : Ctrl+F1은 전 세계적으로 작동하지 않지만 서로 키 조합

StackOverflow https://stackoverflow.com/questions/138533

  •  02-07-2019
  •  | 
  •  

문제

나는 북쪽에 탭 창이있는 스윙 gui를 가지고 있습니다. 입력 맵에 몇 가지 주요 이벤트가 추가됩니다.

InputMap paneInputMap = pane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_E, KeyEvent.CTRL_MASK ), "finish");
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_F1, KeyEvent.CTRL_MASK ), "toggletoolbar");

도구 모음의 탭 창 또는 다른 버튼에 초점이있는 경우 Ctrl 키+F1 기능이 없습니다. 다른 구성 요소가 집중되면 (예 : Jtree) Ctrl 키+F1 행동을 실행합니다.

문제는 키 코드를 변경하면 예를 들어 모든 곳에서 작동한다는 것입니다. VK_F2.

열쇠 F1 프로그램의 다른 곳에서는 사용되지 않습니다.

아이디어가 있습니까?

고마워요, 안드레

편집하다: Java 소스 코드의 전체 텍스트 검색이 답을주었습니다. ToolTipManager 키를 등록합니다 Ctrl 키+F1 키 조합을 누르면 툴팁 텍스트를 표시합니다. 따라서 툴팁이있는 버튼이 집중되면 Ctrl 키+F1 is handled by the ToolTipManager. 그렇지 않으면 내 행동이 호출됩니다.

도움이 되었습니까?

해결책

이것이 답을 얻도록 질문에서 편집에서 복사 한 솔루션이 있습니다. ;-)

TooltipManager가 키를 등록합니다 Ctrl 키+F1 키 조합을 누르면 툴팁 텍스트를 표시합니다. 따라서 툴팁이있는 버튼이 집중되면 Ctrl 키+F1 ToolTipManager가 처리합니다. 그렇지 않으면 내 행동이 호출됩니다.

다른 팁

os retargets 일 수 있습니다 F1 열쇠? 키 리스너를 설치하고 어떤 이벤트가 처리되는지 확인하십시오.

BTW : 질문을 편집하고 테스트 가능한 코드를 삽입 할 수 있다면 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top