我正在使用Swing开发一个相当复杂的Java应用程序。
在某些情况下,如果没有任何用户干预,会发出不必要的哔哔声。没有崩溃,应用程序保持正常工作,我尊重EDT规则等。
然而在某些情况下可以听到一声嘟嘟声:我可能正在做一些愚蠢的事情来触发这种嘟嘟声,但无论如何,当用户不在时,导入数据时不会发生用户操作。
对于一个永远不会发出任何声音来配置它的Java应用程序来说,是否有可能通过为整个应用程序设置一个属性来说:“不要发出哔声”?
我一直在谷歌上搜索这个问题,我发现有同样问题但没有答案的人发来的消息:我发现有一些黑客说有一个已知的问题,JEditorPane并且使用putProperty("IgnoreCharsetDirective", Boolean.TRUE)
是有助于减少不必要的哔哔声。然而,关于这个问题的信息非常稀缺。
这是一个真正的问题,因为应用程序用在计算机上需要声音的环境中,但这种Java应用程序发出的噪音是不可接受的。
答案 0 :(得分:4)
您的问题在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论坛上的线程现在处于脱机状态。
答案 1 :(得分:0)
在Swing中,您需要覆盖LookAndFeel
,如下所示:
UIManager.setLookAndFeel(new NimbusLookAndFeel() {
@Override
public void provideErrorFeedback(Component component) {
// Your beep decision goes here
// You want error feedback
super.provideErrorFeedback(component);
}
});
通常,您的蜂鸣声决定会为您的应用程序引用某种外部配置/首选项标记。