2009-09-25 6 views
1

Swing에서 JTextField 클래스를 확장하는 사용자 지정 텍스트 필드 클래스가 있습니다.JTextField에서 기본 텍스트 필드 바로 가기를 사용하지 않는 방법

Ctrl-A (모두 선택), Ctrl-H (백 스페이스) 등의 기본 동작을 사용하지 않도록 설정하여 텍스트 필드가 포함 된 창에서 원하는대로 단축키를 매핑 할 수있는 방법을 찾아야합니다.

도움을 주시면 감사하겠습니다.

답변

0

아마도 KeyMap을 처리해야합니다. 하여 텍스트 필드 클래스의시 초기화 방법에 다음

추가 :

4

좋아, 대답은 나 자신을 발견

this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK), "none"); 

효과는 텍스트 필드는 바로 가기를 무시하고 함께 전달 키 입력을 할 수 있다는 것입니다 창 바로 가기 핸들러

1

How to make and remove key bindings 구현에 도움이됩니다.

기본 키 바인딩을 모두 제거하려면 상위 InputMap을 비 참조로 지정하십시오.

jtextField.getInputMap().setParent(null); 

그러나 당신이 어떤 문자를 입력 할 수 있도록 키 바인딩을 모두 제거합니다. JTextField의 입력에는 3 개의 부모가 있습니다. 따라서 아래와 같이 특정 키 바인딩을 재정의하는 것이 좋습니다.

InputMap inputMap = jtextfield.getInputMap(); 
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Key_Event.CTRL_DOWN_MASK), "foo"); 
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Key_Event.META_DOWN_MASK), "foo"); 
+0

구성 요소가 정상적으로 응답하는 키를 무시하도록 구성하려면 특수 조치 이름 "none"을 사용할 수 있습니다. 나는 이것이 당신의 "foo"와 다른지 확실치 않습니다 ...;) – Synox

관련 문제