当我把注意力集中在一个不可编辑的JTextField或JTextPane上时,我该如何消除声音呢?
每当我将焦点转移到不可编辑和点击Enter的JTextPane时,就会播放相当于Toolkit类的“哔哔”的声音:
Toolkit.getDefaultToolkit.beet();我怎么才能让它不响呢?
发布于 2014-10-09 16:16:20
您也许可以尝试一下这个question的想法,引用如下:
这样做的目的是获取文本字段的beep操作并禁用它。
JTextField field = new JTextField();
Action action;
action = field.getActionMap().get(DefaultEditorKit.beepAction);
action.setEnabled(false);如果这不起作用,您可以尝试添加一个KeyListener,这将消耗导致beep的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();
}
}
});发布于 2014-10-09 16:15:57
可以从beep类重写Toolkit方法:
public class MuteToolkit extends Toolkit {
public void beep() {
//do nothing
}
// [...] other methods
}然后,将该类设置为默认工具箱:
System.setProperty("awt.toolkit", "package.MuteToolkit");但考虑到这会使所有的蜂鸣声失效,这可能不是最好的选择。
https://stackoverflow.com/questions/26223439
复制相似问题