【发布时间】:2015-04-30 03:13:49
【问题描述】:
所以这个类在自己运行时播放声音文件'Theme A.wav'就好了。
这是“PlayAudio.class”
import java.io.*;
import sun.audio.*;
public class PlayAudio {
public static playsound() {
String sound = "Theme A.wav";
InputStream audio = new FileInputStream(new File(sound));
AudioStream aStream = new AudioStream(audio);
AudioPlayer.player.start(aStream);
System.out.println("Loaded playaudio.class; playing audio");
}
public static void main(String args[]) {
new playsound();
}
}
但是,在主类中找到的播放按钮在单击时无法调用“playaudio.class”。在我添加音频代码之前它工作正常(除了'System.out.println(“Loaded playaudio.class;正在播放音频”);'行)。直到“抛出异常”sn-p 被添加到第一个类中,错误才出现。
//play button
play = new JButton(new ImageIcon ("UIImages/play.png"));
play.setBackground(Color.WHITE);
play.setFocusPainted(false);
//sets up the action play
play.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
PlayAudio.playsound();
}
});
有什么帮助吗? 这是编译器抛出的异常。
1 error found:
File: C:\Users\Hunter\workspace\src\rejomedia.java [line: 74]
Error: Unhandled exception type java.lang.Exception
【问题讨论】:
-
异常说明了什么?
-
已添加到问题中。
-
如果你不介意几个建议:你应该调用你的 playaudio 类 PlayAudio——类以大写字母开头,方法以小写字母开头(所以“main”是正确的)。 #2 你所拥有的是构建错误,而不是异常。仅当您运行程序(java)而不是编译它(javac)时才例外。 #3,从 main 中取出该代码并将其放入另一个方法中,例如“playSound”,然后让您的 main 和事件处理程序都调用“playSound”,这似乎比直接调用“main”要好得多。
-
已编辑,您的意思是这样吗?然后编译器会抛出“缺少方法的返回类型”。错误。我假设这是因为“playsound”不是类文件的名称?
-
好的,关闭。 playsound 需要返回一些东西,使其类型为“void”。在你的 main 和 actionPerformed 内部应该是这样的:“new PlayAudio().playsound()”。要么使 playsound 成为静态,它可以是“PlayAudio.playsound()”。很抱歉,这些东西一开始确实令人困惑且毫无意义,但我保证,当你经常使用它时,所有这些奇怪的陷阱都会非常有用。