import java.awt.*;
import java.awt.event.*;
import sun.audio.*;
import java.io.*;import javax.swing.*;
import javax.swing.event.*;
public class PlayMusic extends JFrame implements ActionListener,ListSelectionListener{
//AudioClip sound;
static JButton play=new JButton("播放");
static JButton stop=new JButton("停止");
static JButton loop=new JButton("循环播放");
static DefaultListModel data=new DefaultListModel();
static JList list=new JList(data);
static AudioStream as;
static String[] musicName={"1.wav","2.wav","3.wav","4.wav"};
public static void main(String[] args) throws IOException{
PlayMusic s=new PlayMusic();
for(int i=0;i<musicName.length;i++){
data.addElement(musicName[i]);
}
list.setSelectedIndex(0);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane jscrolling=new JScrollPane(list);
JPanel north=new JPanel(new FlowLayout());
north.add(play);
north.add(stop);
north.add(loop);
JPanel center=new JPanel(new GridLayout(1,1));
center.add(jscrolling);
JPanel all=new JPanel(new BorderLayout());
all.add("North",north);
all.add("Center",center);
s.add(all);
play.addActionListener(s);
stop.addActionListener(s);
loop.addActionListener(s);
list.addListSelectionListener(s);
s.setSize(300,400);
s.validate();
s.pack();
s.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
Object e=arg0.getSource();
if(e==play)
AudioPlayer.player.start (as);
else if(e==stop)
AudioPlayer.player.stop (as);
}
static InputStream creatStream()throws IOException{
InputStream in=new FileInputStream(list.getSelectedValue().toString());
return in;
}
public void valueChanged(ListSelectionEvent arg0){
//String s=list.getSelectedValues().toString();
if(!arg0.getValueIsAdjusting())
try {
InputStream out= new FileInputStream(list.getSelectedValues().toString());
as=new AudioStream(out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
问题是我每次运行后,都出现找不到文件的异常,但是我把文件都放进在与项目相关的文件夹里,请大家给我指点指点,还有个问题是Java支持什么格式的音乐文件?异常的提示如下:
java.io.FileNotFoundException: [Ljava.lang.Object;@1d1e730 (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at PlayMusic.valueChanged(PlayMusic.java:63)
at javax.swing.JList.fireSelectionValueChanged(Unknown Source)
import java.awt.event.*;
import sun.audio.*;
import java.io.*;import javax.swing.*;
import javax.swing.event.*;
public class PlayMusic extends JFrame implements ActionListener,ListSelectionListener{
//AudioClip sound;
static JButton play=new JButton("播放");
static JButton stop=new JButton("停止");
static JButton loop=new JButton("循环播放");
static DefaultListModel data=new DefaultListModel();
static JList list=new JList(data);
static AudioStream as;
static String[] musicName={"1.wav","2.wav","3.wav","4.wav"};
public static void main(String[] args) throws IOException{
PlayMusic s=new PlayMusic();
for(int i=0;i<musicName.length;i++){
data.addElement(musicName[i]);
}
list.setSelectedIndex(0);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane jscrolling=new JScrollPane(list);
JPanel north=new JPanel(new FlowLayout());
north.add(play);
north.add(stop);
north.add(loop);
JPanel center=new JPanel(new GridLayout(1,1));
center.add(jscrolling);
JPanel all=new JPanel(new BorderLayout());
all.add("North",north);
all.add("Center",center);
s.add(all);
play.addActionListener(s);
stop.addActionListener(s);
loop.addActionListener(s);
list.addListSelectionListener(s);
s.setSize(300,400);
s.validate();
s.pack();
s.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
Object e=arg0.getSource();
if(e==play)
AudioPlayer.player.start (as);
else if(e==stop)
AudioPlayer.player.stop (as);
}
static InputStream creatStream()throws IOException{
InputStream in=new FileInputStream(list.getSelectedValue().toString());
return in;
}
public void valueChanged(ListSelectionEvent arg0){
//String s=list.getSelectedValues().toString();
if(!arg0.getValueIsAdjusting())
try {
InputStream out= new FileInputStream(list.getSelectedValues().toString());
as=new AudioStream(out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
问题是我每次运行后,都出现找不到文件的异常,但是我把文件都放进在与项目相关的文件夹里,请大家给我指点指点,还有个问题是Java支持什么格式的音乐文件?异常的提示如下:
java.io.FileNotFoundException: [Ljava.lang.Object;@1d1e730 (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at PlayMusic.valueChanged(PlayMusic.java:63)
at javax.swing.JList.fireSelectionValueChanged(Unknown Source)
这个语句有问题,参数只传递文件的名称,是不行的,必须要全路径名。
你可以配合System.getProperties("usr.dir")这个方法使用。
例如:
InputStream out= new FileInputStream(System.getProperties("usr.dir")+list.getSelectedValues().toString());
static String[] musicName={"c:\\1.wav","c:\\2.wav","c:\\3.wav","c:\\4.wav"}; InputStream out = new FileInputStream(list.getSelectedValue ().toString() );lz的代码本身就有问题。我倒是没写过播放的程序。不过支持楼主的学习精神。。都快1点了。
package mypro;/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2008</p>
*
* <p>Company: </p>
*
* @author 张栋芳
* @version 1.0音频剪辑生产控制类
*
*/import java.io.*;
import javax.media.*;
import java.net.URL;
import java.applet.Applet;
public class MusicControl {
private URL url = null;
private static Player music = null;
private boolean setAudio(File filepath) {
try {
url = filepath.toURL();
}
catch (Exception ex) {
ex.printStackTrace();
}
if (url == null) {
System.out.println("没有mp3");
return false;
}
try {
music = Manager.createPlayer(url);
}
catch (Exception ex) {
ex.printStackTrace();
}
return true;
}
public void play() {
music.start();
}
public void stop() {
music.stop();
}
//退出
public void exitPlay() {
File file = new File("music/exit.mp3");
if (setAudio(file)) {
music.start();
}
else {
System.out.println("exit");
}
}
//开始
public void startplay() {
File file = new File("music/start.mp3");
if (setAudio(file)) {
music.start();
}
}
public void musicplay(){//firstItem
File file=new File("music/刘德华17岁.mp3");
if(setAudio(file)){
music.start();
}
}
public void secondPlay(){//secondITem
File file=new File("music/轻声歌曲.mp3");
if(setAudio(file)){
music.start();
}
}
public void threePlay(){//threeItme
File file=new File("music/老人与海.mp3");
if(setAudio(file)){
music.start();
}
}
public void stopPlay(){
music.stop();
}
}
请问sun.audio.* 这个包还需要下载吗?JDK里有吗?
我在1.6.0API里怎么没有找到?
up
up
up
什么
用Eclipse直接把音乐放在项目名的目录下就可以了
如果不是要把音乐放在和.class目录下
注Applet程序一定要把用到的文件放到.class所在的目录下