Новичок здесь. Кто-нибудь знает быстрый и простой способ заставить JTextField не издавать звуковой сигнал, когда нажата клавиша возврата, а поле пусто? Я видел пару вещей в Интернете об изменении DefaultEditorKit, но ничего не смог понять. Любая помощь будет принята с благодарностью.
Отключить звуковой сигнал при нажатии Backspace в пустом JTextField
comment
Для других, сталкивающихся с этой проблемой, я ответил здесь: stackoverflow.com/a/30799707/396747
- person Gary Rowe   schedule 12.06.2015
Ответы (3)
Этот код работал для меня.
Action beep = textArea.getActionMap().get(DefaultEditorKit.deletePrevCharAction);
beep.setEnabled(false);
person
Daniel Hladík
schedule
20.02.2015
К сожалению, этот код имеет побочный эффект, заключающийся в предотвращении всех операций удаления возврата.
- person Gary Rowe; 12.06.2015
Но вы можете сделать: Action beep = textArea.getActionMap().get(DefaultEditorKit.deletePrevCharAction); textArea.getActionMap().put(DefaultEditorKit.deletePrevCharAction, new DelActionWrapper(textArea, beep)); где DelActionWrapper реализует Action и делегирует вызовы звукового сигнала, за исключением actionPeform, когда textArea пуст. Может есть способ проще
- person Yevgen Yampolskiy; 23.10.2016
У меня не было возможности попробовать это, но вы можете отключить звуковой сигнал.
JTextField field = new JTextField();
Action action;
a = field.getActionMap().get(DefaultEditorKit.beepAction);
a.setEnabled(false);
person
austin
schedule
17.11.2012
Редактировать: позже я добавлю другой ответ, который, вероятно, будет проще сделать. Я бы прочитал это в первую очередь.
Вы можете попытаться переопределить JTextField в processKeyEvent и проверьте, является ли 1.) нажатая клавиша клавишей возврата и 2.) поле JTextField пусто. Если одно из них ложно, то оно должно вести себя как обычно. В противном случае вы можете просто вернуться из метода.
person
austin
schedule
17.11.2012