2012-11-17 9 views
1

초보자. Backspace를 누르고 필드가 비어있을 때 삐 소리가 나지 않는 JTextField를 빠르고 쉽게 얻을 수있는 방법을 아는 사람이 있습니까? DefaultEditorKit을 변경하는 것에 관한 몇 가지 온라인 작업을 보았습니다. 그러나 나는 아무것도 이해할 수 없었습니다. 어떤 도움이라도 대단히 감사하겠습니다.비어있는 JTextField에서 백 스페이스를 누를 때 경고음을 끕니다.

+0

, 나는 여기에이 대답 http://stackoverflow.com/a/30799707/396747 –

답변

0

편집 :은 아마 할 쉽게 나중에 다른 대답을했습니다. 나는 그것을 먼저 읽었을 것이다.

JTextField의 processKeyEvent 메서드를 재정의하고 1.) 키를 눌렀을 때 키가 백스 페이스 키이고 2.) JTextField가 비어 있는지 확인할 수 있습니다. 이들 중 하나가 거짓이면 정상적으로 작동해야합니다. 그렇지 않으면 메서드에서 반환 할 수 있습니다.

0

나는이 밖으로 시도 할 기회가 없었어요,하지만 당신은 경고음 조치를 해제 할 수 있습니다.

JTextField field = new JTextField(); 
Action action; 
a = field.getActionMap().get(DefaultEditorKit.beepAction); 
a.setEnabled(false); 
2

이 코드는 저에게 효과적입니다. 이 문제가 발생하는 다른 사람에 대한

Action beep = textArea.getActionMap().get(DefaultEditorKit.deletePrevCharAction); 
beep.setEnabled(false); 
+1

불행하게도이 코드는 모든 백 스페이스가 삭제 작업을 방지하는 부작용이있다. –

+0

하지만 할 수 있습니다 : 동작 beep = textArea.getActionMap(). get (DefaultEditorKit.deletePrevCharAction); textArea.getActionMap(). put (DefaultEditorKit.deletePrevCharAction, 새로운 DelActionWrapper (textArea, 경고음)); DelActionWrapper가 Action을 구현하고 textArea가 비어있는 경우 actionPeform을 제외한 호출을 경고음에 위임합니다. 어쩌면 더 쉬운 방법이있을 것입니다. –