下面是一段烟花的程序,希望可以把黑色的背景改为一张图片,和烟花爆发时添加一段爆炸的声音,希望高手帮过改下  import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;
    import javax.swing.*;
import com.sun.java.swing.plaf.windows.resources.windows;
 public class Fireworks extends Applet implements MouseListener,Runnable
    {
     int x,y;
     ImageIcon icon;
    public void init() 
     {
        x = 0;
        y = 0;
        setBackground(Color.black);
        addMouseListener(this);
     }     public void paint(Graphics g) 
     { 
               }
     
     public static void main(String args[]) {
        Fireworks applet = new Fireworks();
        JFrame frame = new JFrame("TextAreaNew");
        
        frame.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e){
            System.exit(0);
          }
        });
        frame.getContentPane().add(
        applet, BorderLayout.CENTER);
        frame.setSize(400,400);
        applet.init();
        applet.start();
        frame.setVisible(true);
      }
      
     public void run()
     {
      Graphics g1;
      g1 = getGraphics();
      int y_move,y_click,x_click;
      int v;
      x_click = x;
      y_click = y;
      y_move = 400;
      v = 3;
     
      while(y_move > y_click)
      { 
        g1.setColor(Color.white);
        g1.fillOval(x_click,y_move,5,5);
        y_move -= 5;
        g1.setColor(Color.black);
        g1.fillOval(x_click,y_move+5*10,5,5);        try 
        {
           Thread.currentThread().sleep(v++);
        } catch (InterruptedException e) {}
           }
         
        for(int j=12;j>=0;j--)
        {
             g1.setColor(Color.black);
       g1.fillOval(x_click,y_move+(j*5),5,5);      }
      
      
      v = 15;
      for(int i=0;i<=25;i++)
      {
       g1.setColor(Color.white);
       g1.drawOval(x_click-3*i,y_click-3*i,6*i,6*i);
       if(i<23) 
       {
        g1.drawOval(x_click-3*(i+1),y_click-3*(i+1),6*(i+1),6*(i+1));
        g1.drawOval(x_click-3*(i+2),y_click-3*(i+2),6*(i+2),6*(i+2));
       }
       try  {
               Thread.currentThread().sleep(v++);
            } catch (InterruptedException e) {}
       g1.setColor(Color.black);
       g1.drawOval(x_click-3*i,y_click-3*i,6*i,6*i);
          
         }
     
     }
     
    public void mousePressed(MouseEvent e)
      {
       for(int i=0;i<20;i++)
          {
        
           x = (((int)Math.round(Math.random()*4321))%200)+100;
           y = (((int)Math.round(Math.random()*4321))%200);
           Thread one;
           one = new Thread(this);
           one.start();
           try {
                  Thread.currentThread().sleep((500));
             } catch (InterruptedException ee) {}
       
           one = null;
          }
       }
       public void mouseReleased(MouseEvent e)
      {  
          
      }
      public void mouseEntered(MouseEvent e)
      {
      }
     public void mouseExited(MouseEvent e)
      {
      }
     public void mouseClicked(MouseEvent e)
      {
      }
     
    }