2014-07-16 8 views
2

스윙 구성 요소의 슬래시 문자에 대한 키 스트로크를 수신하려고합니다. (슬래시는 하나의 키 입력입니다) 영어 키보드 레이아웃을 사용하는 경우 ,스윙에서 수정 자 키를 모른 채 슬래시 키 스트로크 듣기

component.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_SLASH, 0), myAction); 

작품을 등록. 그러나 독일어 키보드 레이아웃을 사용하는 경우 shift-7을 통해 슬래시가 입력되고 obove 코드가 작동하지 않습니다!

이제는 키 조합 대신 정확하게 슬래시 문자를 수신하는 올바른 방법은 무엇입니까?

+0

사용자 (선호도) (http://docs.oracle.com/javase/8/docs/api/java/util/prefs/package-summary.html)로 만들거나 [국제화] (http://www.oracle.com/technetwork/java/javase/tech/intl-139810.html). – trashgod

+0

@trashgod 미안하지만 어떻게 도움이되는지 모르겠다. – radlan

+1

KeyEvent.VK로 정의 된 것은 키가 실제로 현재 키 레이아웃에서 생성하는 문자와 완전히 독립적으로 키보드의 매우 구체적인 * 키 *를 수신합니다. getKeyStroke (char) 및 변형을 사용해보십시오. 이들은 실제 키 맵을 사용합니다. – Durandal

답변

4

현재 KeyStroke는 keyPressed 이벤트를 수신합니다.

어쩌면 당신은 사용할 수 있습니다

KeyStroke slash = KeyStroke.getKeyStroke("typed /"); // or 
KeyStroke slash = KeyStroke.getKeyStroke('/'); 

이 실제로 예를 들어 텍스트 필드에 추가 할 수있는 입력 된 문자를 생성 키 스트로크 (keystroke)을 위해 일해야의 keyTyped 이벤트를 수신합니다.

+0

고마워요! 그것은 그것을 정말로했다! 나는 "타자를 치는 /"specifiing의 가능성을 몰랐다. – radlan