2011-02-02 4 views
3

InputMap/ActionMap을 사용하여 삭제 키를 가로 채려고합니다. Enter 키를 눌러 작동 시키지만 삭제로 응답하지 않는 것 같습니다 (Mac OSX에서 문제가있는 부분인지 궁금합니다).Java 스윙의 키 스트로크

내가 뭘 잘못하고 있니?

private void setupKeyBindings(final JList jlist) { 
     String delAction = "deleteItems"; 
     KeyStroke delKey = KeyStroke.getKeyStroke("DELETE"); 
     jlist.getInputMap().put(delKey, delAction); 
     jlist.getActionMap().put(delAction, new AbstractAction() 
     { 
      @Override public void actionPerformed(ActionEvent e) { 
       System.out.println("delete pressed"); 
       doDelete(jlist); 
      } 
     });  

     String enterAction = "useItems"; 
     KeyStroke enterKey = KeyStroke.getKeyStroke("ENTER"); 
     jlist.getInputMap().put(enterKey, enterAction); 
     jlist.getActionMap().put(enterAction, new AbstractAction() 
     { 
      @Override public void actionPerformed(ActionEvent e) { 
       System.out.println("enter pressed"); 
      } 
     }); 
    } 
+0

https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html 당신이 시도 되세요'KeyStroke.getKeyStrokeForEvent (KeyEvent.VK_DELETE) '? 이것은 어두운 곳에서의 촬영이지만,'KeyStroke.getKeyStroke ("BACKSPACE")'에 대해서는 어떨까요? – earldouglas

답변

7

흠. 내 Mac의 "delete"키가 backspace 인 KeyListener keycode 8에 매핑되는 것 같습니다. 다음은 매핑하기 위해 Mac 용 작품에 나타납니다

(내 맥 키보드 바로 삭제 키가 아닌 별도의 백 스페이스 키, 모두가 대 윈도우 PC 키보드있다) 명령 삭제 :

KeyStroke delKey = KeyStroke.getKeyStroke(
    KeyEvent.VK_BACK_SPACE, InputEvent.META_MASK); 
+0

정확함; Mac은 다른 키보드에서 Backspace라는 항목에 Delete라는 용어를 사용합니다. –

+4

진정한 '삭제'를 수행하려면 'fn'을 누른 상태에서 '삭제'를 눌러야합니다. FYI처럼. – Lee

3
KeyStroke.getKeyStroke("BACK_SPACE"); 

나를 위해 일했습니다.

1

이 직접 귀하의 질문에 대답하지 않습니다,하지만 내 대답 : 당신은 여기에 기타의 KeyEvent 정수 상수를 찾을 수 있습니다

deleteAction.putValue(
    javax.swing.Action.ACCELERATOR_KEY, 
    KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0) 
); 

:

+1

고맙지 만, 삭제 키가 Java "백 스페이스"개념에 매핑되기 때문에 Mac에서는 (원래 질문을 쓰는 시점이 아니라면) 작동하지 않습니다. –

+0

@ JasonS 예, 알고 있습니다. 하지만 여기에 대답은 내 Windows 컴퓨터에서 나를 위해 작동하지 않았다, 그래서 나는이 질문을 가로 질러 와서 윈도우 사용자를 위해이 답변을 게시거야. – shieldgenerator7

+0

이 질문에는'osx' 태그가 있습니다. –