我想在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程序运行,不知怎么修改
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程序运行,不知怎么修改
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();
}
}
}