import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 *//**
 *
 * @author Administrator
 */
public class Music extends JApplet{
   private static int i;
   private  static AudioClip[] audioClip=new AudioClip[i];
   private  static AudioClip currentAudioClip;
  
  
   public Music(){
     // URL urlForImage1=getClass().getResource("image/xiaoqing.gif");
      //add(new JLabel(new ImageIcon(urlForImage1)));
        URL urlForImage=getClass().getResource("image/nature.jpg");
        add(new JLabel(new ImageIcon(urlForImage)));      URL urlForAudio=getClass().getResource("audio/songs1.au");
       currentAudioClip=Applet.newAudioClip(urlForAudio);
     currentAudioClip.loop();
      final JComboBox songs=new JComboBox(new Object[]{"xiaoge","sixingbugai","月光下的凤尾竹"});
 for(int j=0;j<3;j++){
            audioClip[j]=Applet.newAudioClip(getClass().getResource("audio/songs"+j+".au"));
        }
    }
    public void start(){
        if(currentAudioClip!=null) currentAudioClip.loop();
    }
    public void stop(){
        if(currentAudioClip!=null) currentAudioClip.stop();
    }    public static void main(String[] args){        JPanel jpButtons=new JPanel();
   final JComboBox songs=new JComboBox(new Object[]{"xiaoge","sixingbugai","月光下的凤尾竹"});
        JButton button1 = new JButton("Resume");
        JButton button2 =new JButton("Suspend");
        
        jpButtons.add(button1);
        jpButtons.add(button2);
        jpButtons.add(new JLabel("Select"));
      
       jpButtons.add(songs);
      
        JFrame frame=new JFrame("DisplayMusic");
        Music applet=new Music(); applet.init();
        
   frame.add(jpButtons,BorderLayout.SOUTH);
     
       frame.add(applet,BorderLayout.CENTER);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
     button1.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {
            currentAudioClip.loop();
            }
        });
        button2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                currentAudioClip.stop();
            }
        });
        songs.addActionListener(new ActionListener(){
           
           
           public void actionPerformed(ActionEvent e){
              currentAudioClip.stop();
                int current = songs.getSelectedIndex();
      songs.setSelectedIndex(current);
                currentAudioClip=audioClip[current];
               
     currentAudioClip.loop();
               
           }          
        });
        
    } 
        
   }请问我这道题是显示一张图片,然后3首歌每点击一次不同歌曲就换歌曲,错误如下
un:
Exception in thread "main" java.lang.NullPointerException
        at sun.applet.AppletAudioClip.<init>(AppletAudioClip.java:48)
        at java.applet.Applet.newAudioClip(Applet.java:279)
        at Music.<init>(Music.java:42)
        at Music.main(Music.java:68)
生成已停止(总时间:1 分钟 2 秒)
,请问错在哪,怎么修改?谢谢

解决方案 »

  1.   

    空指针异常 
    at Music. <init>(Music.java:42) 
    audioClip[j]=Applet.newAudioClip(getClass().getResource("audio/songs"+j+".au")); 
    出项了对空指针的使用
      

  2.   

    at Music. <init>(Music.java:42) 出现空指针
    检查一下,看看是不是哪个对象没有初始化
      

  3.   


    //仔细一看
    public class Music extends JApplet{ 
      private static int i; //wo de GOD ,没有显示初始化,所以i=0;
      private  static AudioClip[] audioClip=new AudioClip[i]; // 这里就申请了new AudioClip[0]; 
    //audioClip[j]=Applet.newAudioClip(getClass().getResource("audio/songs"+j+".au")); 
    z这里就出错了
      private  static AudioClip currentAudioClip;