4

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

在某些情况下,在没有任何用户干预的情况下会发出不需要的哔声。没有崩溃,应用程序运行良好,我尊重 EDT 规则等。

然而在某些情况下可以听到哔声:我可能正在做一些愚蠢的事情来触发哔声,但无论如何这不是用户操作,因为它可能在导入数据时发生,当用户离开时。

对于一个永远不应该发出任何声音来配置它的 Java 应用程序,是否有可能通过为整个应用程序设置一个属性,上面写着:“永远不要发出哔哔声”?

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

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

4

2 回答 2

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 论坛上的线程现在处于脱机状态。

于 2010-02-15T15:02:04.667 回答
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);

  }
});

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

于 2015-06-12T09:28:34.627 回答