초보자. Backspace를 누르고 필드가 비어있을 때 삐 소리가 나지 않는 JTextField를 빠르고 쉽게 얻을 수있는 방법을 아는 사람이 있습니까? DefaultEditorKit을 변경하는 것에 관한 몇 가지 온라인 작업을 보았습니다. 그러나 나는 아무것도 이해할 수 없었습니다. 어떤 도움이라도 대단히 감사하겠습니다.비어있는 JTextField에서 백 스페이스를 누를 때 경고음을 끕니다.
답변
편집 :은 아마 할 쉽게 나중에 다른 대답을했습니다. 나는 그것을 먼저 읽었을 것이다.
JTextField의 processKeyEvent 메서드를 재정의하고 1.) 키를 눌렀을 때 키가 백스 페이스 키이고 2.) JTextField가 비어 있는지 확인할 수 있습니다. 이들 중 하나가 거짓이면 정상적으로 작동해야합니다. 그렇지 않으면 메서드에서 반환 할 수 있습니다.
나는이 밖으로 시도 할 기회가 없었어요,하지만 당신은 경고음 조치를 해제 할 수 있습니다.
JTextField field = new JTextField();
Action action;
a = field.getActionMap().get(DefaultEditorKit.beepAction);
a.setEnabled(false);
이 코드는 저에게 효과적입니다. 이 문제가 발생하는 다른 사람에 대한
Action beep = textArea.getActionMap().get(DefaultEditorKit.deletePrevCharAction);
beep.setEnabled(false);
불행하게도이 코드는 모든 백 스페이스가 삭제 작업을 방지하는 부작용이있다. –
하지만 할 수 있습니다 : 동작 beep = textArea.getActionMap(). get (DefaultEditorKit.deletePrevCharAction); textArea.getActionMap(). put (DefaultEditorKit.deletePrevCharAction, 새로운 DelActionWrapper (textArea, 경고음)); DelActionWrapper가 Action을 구현하고 textArea가 비어있는 경우 actionPeform을 제외한 호출을 경고음에 위임합니다. 어쩌면 더 쉬운 방법이있을 것입니다. –
, 나는 여기에이 대답 http://stackoverflow.com/a/30799707/396747 –