Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在空JTextField中按backspace时禁用蜂鸣音_Java_Jtextfield_Backspace_Beep - Fatal编程技术网

Java 在空JTextField中按backspace时禁用蜂鸣音

Java 在空JTextField中按backspace时禁用蜂鸣音,java,jtextfield,backspace,beep,Java,Jtextfield,Backspace,Beep,我是初学者。有人知道一种快速简便的方法,当按下backspace且字段为空时,让JTextField不发出蜂鸣声吗?我在网上看到了一些关于更改DefaultEditorKit的事情,但我什么都搞不懂。任何帮助都将不胜感激。编辑:我稍后会给出另一个可能更容易的答案。我会先读那本 您可以尝试覆盖JTextField的方法,并检查1.)按下的键是否为退格键,2.)JTextField是否为空。如果其中任何一个是错误的,那么它的行为应该是正常的。否则,您可以直接从该方法返回。我还没有机会尝试此操作,但您

我是初学者。有人知道一种快速简便的方法,当按下backspace且字段为空时,让JTextField不发出蜂鸣声吗?我在网上看到了一些关于更改DefaultEditorKit的事情,但我什么都搞不懂。任何帮助都将不胜感激。

编辑:我稍后会给出另一个可能更容易的答案。我会先读那本


您可以尝试覆盖JTextField的方法,并检查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);

不幸的是,这段代码的副作用是阻止所有的退格删除操作。但是您可以这样做:Action beep=textArea.getActionMap().get(DefaultEditorKit.deletePrevCharAction);textArea.getActionMap().put(DefaultEditorKit.deletePrevCharAction,新的DelActionWrapper(textArea,beep));其中DelActionWrapper实现操作,并在textArea为空时委托调用beep操作,actionPeform除外。对于其他遇到此问题的人,可能有一种更简单的方法,我在这里回答: