首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除焦点转移到不可编辑的JTextComponent时播放的声音

如何删除焦点转移到不可编辑的JTextComponent时播放的声音
EN

Stack Overflow用户
提问于 2014-10-06 19:28:58
回答 2查看 486关注 0票数 2

当我把注意力集中在一个不可编辑的JTextField或JTextPane上时,我该如何消除声音呢?

每当我将焦点转移到不可编辑和点击Enter的JTextPane时,就会播放相当于Toolkit类的“哔哔”的声音:

代码语言:javascript
复制
Toolkit.getDefaultToolkit.beet();

我怎么才能让它不响呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-09 16:16:20

您也许可以尝试一下这个question的想法,引用如下:

这样做的目的是获取文本字段的beep操作并禁用它。

代码语言:javascript
复制
JTextField field = new JTextField();
Action action;
action = field.getActionMap().get(DefaultEditorKit.beepAction);
action.setEnabled(false);

如果这不起作用,您可以尝试添加一个KeyListener,这将消耗导致beep的KeyEvent

代码语言:javascript
复制
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();
    }        
  }
});
票数 2
EN

Stack Overflow用户

发布于 2014-10-09 16:15:57

可以从beep类重写Toolkit方法:

代码语言:javascript
复制
public class MuteToolkit extends Toolkit {
    public void beep() {
        //do nothing
    }
    // [...] other methods
}

然后,将该类设置为默认工具箱:

代码语言:javascript
复制
System.setProperty("awt.toolkit", "package.MuteToolkit");

但考虑到这会使所有的蜂鸣声失效,这可能不是最好的选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26223439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档