【问题标题】:How to beep different for JOptionPane?JOptionPane 如何发出不同的哔声?
【发布时间】:2013-07-01 10:34:40
【问题描述】:

如何在 java 中使用 JOptionPane 为不同类型的消息(例如警告、信息、问题)生成不同的哔声。与 Windows 操作系统一样,出现给用户的每条消息都有不同的哔声。 目前我正在使用以下方法生成哔声,但每次都发出相同的哔声。

Toolkit.getDefaultToolkit().beep();
JJOptionPane.showMessageDialog( myFrame, "Message", "Title", JOptionPane.INFORMATION_MESSAGE );

我希望警告消息、信息消息和问题消息发出不同的哔声。有什么办法吗?

【问题讨论】:

    标签: java swing joptionpane beep


    【解决方案1】:

    beep 向底层操作系统发出请求以发出哔声。在某些平台(如 Windows)上,播放“默认声音”。

    与其尝试与特定平台交互,不如在显示对话框之前播放相应的声音文件更简单:

    AudioInputStream ais = 
         AudioSystem.getAudioInputStream(getClass().getResource("/information.wav"));
    Clip clip = AudioSystem.getClip();
    clip.open(ais);
    clip.start();            
    JOptionPane.showMessageDialog(...);
    clip.close();
    

    【讨论】:

    • clipais是否需要关闭,但我认为必须关闭。是否有必要将我的音频放入资源中,但我想稍后打包应用程序,它可以正常工作吗?
    • 嗯.. 看来我应该根据消息类型手动播放音频。但我希望我只写JOptionPane.shwMessageDialog(...);,Java 应该根据消息类型对我发出哔哔声。有可能吗?
    • 是的,调用Clip#close 释放任何正在使用的资源是一种很好的做法。如果您正在打包应用程序,则使用 getResource 是一种方法。
    • 需要关闭AudioInputStream吗? esp是什么意思?
    • 为了回答您的第二个问题,在调用 beep 时会向本机操作系统发出请求。去clip.start跨平台。
    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多