想请教大家一个问题,书上的例题,但就是放不出音乐来
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.*;
public class sound extends JFrame{
private JButton button=new JButton("暂停");
private Clip clip;
public sound(){
setSize(300,300);
setLocation(400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try{
InputStream stream=new FileInputStream("sounds/music.mid");
AudioInputStream audioStream=AudioSystem.getAudioInputStream(stream);
clip.open(audioStream);
clip.start();
}catch(Exception e){
e.printStackTrace();}
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
if(button.getText().equals("暂停")){
clip.stop();
button.setText("重新开始");}
else{
clip.start();
button.setText("暂停");}
}
});
setLayout(new FlowLayout());
add(button);}
public static void main(String[] args){
sound frame=new sound();
frame.setVisible(true);}}

解决方案 »

  1.   

    没有错误信息呀,只看出setLayout(null);add(button);应改成getContentPane().setLayout(null);getContentPane().add(button);
      

  2.   

    刚试了一下,你的代码在我机子上是会报错的,改了下不报错了,不过,像你说的那样,播放不了,不过,我机子上没有任何音乐播放器,可能与之有关,修改后代码
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import javax.swing.*;import sun.audio.AudioPlayer;
    import sun.audio.AudioStream;public class sound extends JFrame {
    /**
     * 
     */
    private static final long serialVersionUID = 1L; private JButton button = new JButton("暂停"); private InputStream stream; public sound() {
    setSize(300, 300);
    setLocation(400, 400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    try {
    stream = new FileInputStream("F:/abc.mid");
    AudioStream audioStream =  new sun.audio.AudioStream(stream);
    AudioPlayer.player.start(audioStream);
    } catch (Exception e) {
    e.printStackTrace();
    }
    button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent event) {
    if (button.getText().equals("暂停")) {
    AudioPlayer.player.stop(stream);
    button.setText("重新开始");
    } else {
    AudioPlayer.player.start();
    button.setText("暂停");
    }
    }
    });
    getContentPane().setLayout(null);
    getContentPane().add(button);
    } public static void main(String[] args) {
    sound frame = new sound();
    frame.setVisible(true);
    }
    }你源码报错信息是:
    java.io.FileNotFoundException: sounds\music.mid (系统找不到指定的路径。)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at java.io.FileInputStream.<init>(FileInputStream.java:66)
    at sound.<init>(sound.java:21)
    at sound.main(sound.java:45)
    java.lang.Error: Do not use sound.setLayout() use sound.getContentPane().setLayout() instead
    at javax.swing.JFrame.createRootPaneException(JFrame.java:465)
    at javax.swing.JFrame.setLayout(JFrame.java:531)
    at sound.<init>(sound.java:40)
    at sound.main(sound.java:45)