我想在java应用中使用JApplet类,做了一个音频播放的,想在含有main的java程序中调用这个类,
package sound.component;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
public class AudioJApplet extends JApplet implements ActionListener{
AudioClip au;
JButton JBstart=new JButton("播放");
JButton JBpause=new JButton("暂停");
public void init()
{
au=getAudioClip(getCodeBase(),"onestop.mid");
this.setLayout(new FlowLayout());
this.add(JBstart);
this.add(JBpause);
JBstart.addActionListener(this);
JBpause.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("播放"))
{
au.loop();
}
else if(cmd.equals("暂停"))
{
au.stop();
}
}
public void stop()
{
au.stop();
}
}
不过每次getCodeBase()都抛出空的异常,我知道是因为必须用HTML文件运行才可以,不过现在想用含有main的java程序运行,不知怎么修改

解决方案 »

  1.   

    那你就在main方法里创建一个你这个AudioJApplet对象,然后再创建一个JFrame对象,将AudioJApplet对象添加到JFrame容器当中,设置好JFrame的属性,当然,别忘记了调用JApplet的init和start方法,最后要记得调用JFrame的setVisible方法。
      

  2.   


    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.applet.*;
    import java.net.*;
    import java.io.*;public class AudioJApplet extends JApplet implements ActionListener
    {
    AudioClip au;
    JButton JBstart=new JButton("播放");
    JButton JBpause=new JButton("暂停");
    public static final int Default_Width = 350;
    public static final int Default_Height = 200;

    public void init()
    {
    try
    {
    File file = new File("onestop.mid");
    au = newAudioClip(file.toURL());
    }
    catch(MalformedURLException e){e.printStackTrace();}
    this.setLayout(new FlowLayout());
    this.add(JBstart);
    this.add(JBpause);
    JBstart.addActionListener(this);
    JBpause.addActionListener(this);
    }

    public void actionPerformed(ActionEvent e)
    {
    String cmd=e.getActionCommand();
    if(cmd.equals("播放"))
    {
    au.loop();
    }
    else if(cmd.equals("暂停"))
    {
    au.stop();
    }
    }

    public void stop()

    au.stop();
    }

    public static void main(String[] args)
    {
    MyFrame frame = new MyFrame(new AudioJApplet());
    frame.setSize(Default_Width, Default_Height);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    }
    }class MyFrame extends JFrame
    {
    private AudioJApplet applet;

    public MyFrame(AudioJApplet aApplet)
    {
    applet = aApplet;
    getContentPane().add(applet);
    }

    public void setVisible(boolean b)
    {
    if(b)
    {
    applet.init();
    super.setVisible(true);
    applet.start();
    }
    else
    {
    applet.stop();
    super.setVisible(false);
    applet.destroy();
    }
    }
    }