当我将焦点放在不可编辑的JTextField或JTextPane上时,如何消除声音?
每当我将焦点转移到不可编辑的JTextPane并按Enter键时,会播放一个等于" beep" Toolkit类:
Toolkit.getDefaultToolkit.beet();
如何让它播放声音?
答案 0 :(得分:2)
您可以尝试使用此question引用的想法:
这个想法是为文本字段发出哔声动作并禁用它。
JTextField field = new JTextField();
Action action;
action = field.getActionMap().get(DefaultEditorKit.beepAction);
action.setEnabled(false);
如果这不起作用,您可以尝试添加KeyListener
,这将消耗导致蜂鸣声的KeyEvent
。
JTextField textField = new JTextField();
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
// will consume the event and stop it from processing normally
e.consume();
}
}
});
答案 1 :(得分:1)
您可以覆盖beep
类中的Toolkit
方法:
public class MuteToolkit extends Toolkit {
public void beep() {
//do nothing
}
// [...] other methods
}
然后,将此类设置为默认工具包:
System.setProperty("awt.toolkit", "package.MuteToolkit");
但可能不是最佳选择,因为它会禁用所有哔哔声。