我正在使用 Swing 开发一个相当复杂的 Java 应用程序。
在某些情况下,无需任何用户干预就会发出不需要的蜂鸣声。没有崩溃,应用程序继续正常工作,我遵守 EDT 规则等。
但在某些情况下可以听到哔哔声:我可能正在做一些愚蠢的事情来触发哔哔声,但无论如何这都不是用户操作,因为当用户不在时,它可能会在导入数据时发生。
对于永远不应该发出任何声音的 Java 应用程序来说,是否有可能对其进行配置,比如为整个应用程序设置一个属性:“永远不要发出哔哔声”?
我一直在谷歌搜索这个问题,我发现有同样问题但没有答案的人的消息:我发现的只是一些 hack 说 JEditorPane 有一个已知问题并且使用 putProperty("IgnoreCharsetDirective", Boolean.TRUE)
有助于减少不必要的蜂鸣声。然而,关于这个主题的信息非常稀少。
这是一个真正的问题,因为应用程序是在需要计算机声音的环境中使用的,但是这个 Java 应用程序发出噪音是 Not Acceptable 。
最佳答案
Java 论坛上讨论了您的问题:
// Write a custom toolkit
public class MyToolkit extends sun.awt.windows.WToolkit
{
public void beep() {
}
}
// Set this property
System.setProperty("awt.toolkit", "MyPackage.MyToolkit");
注意:
不鼓励使用此解决方法。您仍然应该尝试找到问题的根源。
编辑:删除了一个链接,因为 Java 论坛上的帖子现在处于离线状态。
关于Java:完全禁用任何 Swing 不需要的蜂鸣声的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2266549/