Java:完全禁用任何Swing不必要的哔声的方法?

我正在使用Swing开发一个相当复杂的Java应用程序。

在某些情况下,没有任何用户干预就会发出不必要的哔声。 没有崩溃,应用程序保持正常工作,我尊重EDT规则等。

然而在某些情况下,可以听到一声嘟嘟声:我可能正在做一些愚蠢的事情来触发蜂鸣声,但无论如何,当用户不在时,导入数据时不会发生用户操作。

是否有可能,对于一个永远不会发出声音来配置它的Java应用程序,可以通过为整个应用程序设置一个属性来说:“不要发出一声嘟嘟声”?

我一直在谷歌搜索这个问题,我发现有同样问题但没有答案的人发来的消息:我发现有一些黑客说有一个已知的问题,JEditorPane和使用putProperty("IgnoreCharsetDirective", Boolean.TRUE)有助于减少不必要的哔哔声发生。 然而,关于这个问题的信息非常稀少。

这是一个真正的问题,因为应用程序用在计算机上需要声音的环境中,但是这种发出噪声的Java应用程序是不可接受的。

您的问题在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"); 

NOTE:不鼓励使用此变通方法。 您仍应尝试找到问题的根源。


编辑:删除了一个链接,因为Java论坛上的线程现在处于脱机状态。

在Swing中,您需要覆盖LookAndFeel ,如下所示:

 UIManager.setLookAndFeel(new NimbusLookAndFeel() { @Override public void provideErrorFeedback(Component component) { // Your beep decision goes here // You want error feedback super.provideErrorFeedback(component); } }); 

通常,您的蜂鸣声决定会为您的应用程序引用某种外部配置/首选项标志。

Interesting Posts