2012-04-15 2 views
1

가속기를 JMenuItem에 설정하려고합니다.Java - JMenuItem에 가속기 추가

는 지금은이

openFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); 

처럼 설정하고 그것은 작동하고 있지만 가속기로 오 + Ctrl 키를 원하지 않는다. 가속기로 '공간'을 원하지만 '공간'에 해당하는 KeyStroke를 생성 할 수있는 방법을 찾지 못했습니다.

KeyStroke.getStroke() 

하나는 문자 또는 (INT, INT)에 걸린다. 나는 공간에 상응하는 숯을 찾지 못했다.

답변

3

.. 공간에도 해당하는 숯을 찾지 못했습니다. ' ' 이후

KeyEvent.VK_SPACE

스윙이이를 무시한다면 나는 놀라지 않을 것이다

는 특이한 & 보이지 가속기입니다.

+0

공간에 해당하는 'char'을 찾지 못했습니다. 'KeyEvent.VK_SPACE'는 int이며 int 만 취하는 KeyStroke.getStroke (int)와 같은 메소드가 없습니다. 내가 싫어하는 수정자를 몇 개 제공해야합니다. –

+0

그럼 내가 바로 잡을 수있게 해줘. 사용자가 버튼으로 이동하여 '페이스'를 눌러 활성화하면 메뉴 작업을 호출 하시겠습니까? '비정상적인 & 가속화 된 액셀러레이터'를 '실용적인 GUI'로 업그레이드하겠습니다. 나의 충고는 '실행 가능한 가속기 서신 선택'입니다. 메뉴 항목에 표시된 텍스트는 무엇입니까? –

+1

+1 사용자의 생각. :-) 기타 [여기] (http://stackoverflow.com/a/10161155/230513). – trashgod

3

대부분의 UI 대리자는 METRICAL TETRASEME : ⏘ (U+23D8)과 같은 것을 사용하여 KeyEvent.VK_SPACE 액셀러레이터를 렌더링합니다. 예를 들어 Action에는 다음 줄이 포함될 수 있습니다.

static final int MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); 
putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, MASK)); 
+2

Mac OS X은이 액셀러레이터를 사용하여 [주목받는 검색]을 시작합니다 (http://en.wikipedia.org/wiki)./Spotlight_ % 28 소프트웨어 % 29). – trashgod