java - 循环音频和输入对话框取消

标签 java

我正在尝试让 JOptionPane 游戏正常运行。我有音频循环的代码。但是,当用户单击输入对话框上的“取消”时,它会退出游戏,但不会关闭音频线程。 发生这种情况时,我需要一些东西来杀死音频线程。

我尝试过其他播放音频 .wav 文件的方法。但当用户点击取消时,它仍然会播放。已尝试使用 JFrames 并处理框架,但这也不会处理音频线程。

URL urlfog = theFog.class.getClassLoader().getResource("thefog.wav");
AudioInputStream audioStreamfog = AudioSystem.getAudioInputStream(urlfog);
AudioFormat formatfog = audioStreamfog.getFormat();
DataLine.Info infofog = new DataLine.Info(Clip.class, formatfog);
Clip audioClipfog = (Clip) AudioSystem.getLine(infofog);
audioClipfog.open(audioStreamfog);
audioClipfog.loop(audioClipfog.LOOP_CONTINUOUSLY);


String name;

do {
    name = (String) JOptionPane.showInputDialog(null,"Hello what is your name?","The Fog",JOptionPane.INFORMATION_MESSAGE,icon1,null,"");
}
while (name.equalsIgnoreCase(""));

取消程序后没有错误消息,只是音频仍在播放。

最佳答案

String name;
do {
    name = (String) JOptionPane.showInputDialog(null, "Hello what is your name?", "The Fog", JOptionPane.INFORMATION_MESSAGE, icon1, null, "");

    if ((name == null)) {
        audioClipfog.stop();
        System.exit(0);
    }
}
while (name.equalsIgnoreCase(""));

关于java - 循环音频和输入对话框取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57949525/

相关文章:

java - ERR未知命令 'GEOADD'来自java spring中的嵌入式redis

java - 使用 RestTemplate 和 Jackson 反序列化对 Java 的 JSON 响应

java - 通过 Eclipse 运行 Spring Boot 应用程序拾取测试类

java - 如何在 spring-mvc 中向 webflux 端点添加日志记录?

java - 如何在android中随机选择按钮?

java - 安卓 : No resource identifier found for attribute 'headerView'

java - 如何替换给定模式中的 '0' 值?

java - hibernate一对多将子对象与父关系分离

java- iCal4j - 添加 session 描述

java - JAXB 如何将类名映射到 XML 元素名?