我做了一个音乐播放器,用户在文本框输入内容就会播放
但是我发现播放路径必须是常量字符串("x:/xxxx/xxxx")
如果是txt.getText()就会出错,这该怎么办?
以下是代码import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
import java.net.*;
public class Mingqu implements ActionListener
{
JMenuItem menuItem1,menuItem2,menuItem3,menuItem4,menuItem5;
AudioClip ddb,sound=loadSound("1.wav");
static JFrame frame;
public static void main(String args[])
{
frame=new JFrame("名曲欣赏");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Mingqu ming=new Mingqu();
frame.setJMenuBar(ming.init());
frame.setSize(250,150);
TextField txt=new TextField(20);
frame.getContentPane().add(txt);
frame.setVisible(true);
}public JMenuBar init()
{
JMenuBar menuBar=new JMenuBar();
JMenu menu=new JMenu("音乐");
menuItem1=new JMenuItem("播放");
menu.add(menuItem1);
menuItem2=new JMenuItem("循环");
menu.add(menuItem2);
menuItem3=new JMenuItem("停止");
menu.add(menuItem3);
menuItem4=new JMenuItem("退出");
menu.add(menuItem4);
menuItem5=new JMenuItem("路径");
menu.add(menuItem5);
menuBar.add(menu);
menuItem1.addActionListener(this);
menuItem2.addActionListener(this);
menuItem3.addActionListener(this);
menuItem4.addActionListener(this);
menuItem5.addActionListener(this);
return menuBar;
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==menuItem1) sound.play();
if(e.getSource()==menuItem2) sound.loop();
if(e.getSource()==menuItem3) sound.stop();
if(e.getSource()==menuItem4) System.exit(0);
if(e.getSource()==menuItem5) sound=loadSound(txt.getText());//这行挂了
}
public AudioClip loadSound(String fileName)
{
URL url=null;
try{ url=new URL("file:"+System.getProperty("user.dir")+"/"+fileName);}
catch(MalformedURLException e){}
return Applet.newAudioClip(url);
}
}
但是我发现播放路径必须是常量字符串("x:/xxxx/xxxx")
如果是txt.getText()就会出错,这该怎么办?
以下是代码import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
import java.net.*;
public class Mingqu implements ActionListener
{
JMenuItem menuItem1,menuItem2,menuItem3,menuItem4,menuItem5;
AudioClip ddb,sound=loadSound("1.wav");
static JFrame frame;
public static void main(String args[])
{
frame=new JFrame("名曲欣赏");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Mingqu ming=new Mingqu();
frame.setJMenuBar(ming.init());
frame.setSize(250,150);
TextField txt=new TextField(20);
frame.getContentPane().add(txt);
frame.setVisible(true);
}public JMenuBar init()
{
JMenuBar menuBar=new JMenuBar();
JMenu menu=new JMenu("音乐");
menuItem1=new JMenuItem("播放");
menu.add(menuItem1);
menuItem2=new JMenuItem("循环");
menu.add(menuItem2);
menuItem3=new JMenuItem("停止");
menu.add(menuItem3);
menuItem4=new JMenuItem("退出");
menu.add(menuItem4);
menuItem5=new JMenuItem("路径");
menu.add(menuItem5);
menuBar.add(menu);
menuItem1.addActionListener(this);
menuItem2.addActionListener(this);
menuItem3.addActionListener(this);
menuItem4.addActionListener(this);
menuItem5.addActionListener(this);
return menuBar;
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==menuItem1) sound.play();
if(e.getSource()==menuItem2) sound.loop();
if(e.getSource()==menuItem3) sound.stop();
if(e.getSource()==menuItem4) System.exit(0);
if(e.getSource()==menuItem5) sound=loadSound(txt.getText());//这行挂了
}
public AudioClip loadSound(String fileName)
{
URL url=null;
try{ url=new URL("file:"+System.getProperty("user.dir")+"/"+fileName);}
catch(MalformedURLException e){}
return Applet.newAudioClip(url);
}
}
package je.test;
// play music
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
import java.net.*;public class Mingqu implements ActionListener
{
JMenuItem menuItem1,menuItem2,menuItem3,menuItem4,menuItem5;
AudioClip sound=loadSound("login.wav");
static JFrame frame;
static JTextField txt;
public static void main(String args[])
{
frame = new JFrame("Music");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Mingqu ming=new Mingqu();
frame.setJMenuBar(ming.init());
frame.setSize(250,150);
txt = new JTextField(20);
frame.getContentPane().add(txt);
frame.setVisible(true);
}
public JMenuBar init()
{
JMenuBar menuBar = new JMenuBar();
JMenu menu=new JMenu("音乐");
menuItem1=new JMenuItem("播放");
menu.add(menuItem1);
menuItem2=new JMenuItem("循环");
menu.add(menuItem2);
menuItem3=new JMenuItem("停止");
menu.add(menuItem3);
menuItem4=new JMenuItem("退出");
menu.add(menuItem4);
menuItem5=new JMenuItem("路径");
menu.add(menuItem5);
menuBar.add(menu);
menuItem1.addActionListener(this);
menuItem2.addActionListener(this);
menuItem3.addActionListener(this);
menuItem4.addActionListener(this);
menuItem5.addActionListener(this);
return menuBar; }
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==menuItem1) sound.play();
if(e.getSource()==menuItem2) sound.loop();
if(e.getSource()==menuItem3) sound.stop();
if(e.getSource()==menuItem4) System.exit(0);
if(e.getSource()==menuItem5)
sound=loadSound(txt.getText());//这行挂了
}
public AudioClip loadSound(String fileName)
{
URL url=null;
try
{
url=new URL("file:"+System.getProperty("user.dir")+"/"+fileName);
}
catch(MalformedURLException e){}
return Applet.newAudioClip(url);
}
}
Exception in thread "main" java.lang.NoClassDefFoundError: Mingqu (wrong name
e/test/Mingqu)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java
3)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)F:\源码\Java源码\音乐播放器>
你加了包啊,
编译:
javac -d . Mingqu.java
要不你自己建文件夹放进去。
运行:
java je.test.MIngqu
Exception in thread "main" java.lang.NoClassDefFoundError: je/test/MIngqu (wrong
name: je/test/Mingqu)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
3)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)F:\源码\Java源码\音乐播放器>
package music;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
import java.net.*;
public class Minggu implements ActionListener
{
JMenuItem menuItem1,menuItem2,menuItem3,menuItem4,menuItem5;
AudioClip ddb,sound=loadSound("1.wav");
static JFrame frame; TextField txt; public static void main(String args[])
{
frame=new JFrame("名曲欣赏");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Minggu ming=new Minggu();
frame.setJMenuBar(ming.init());
frame.setSize(250,150);
TextField txt = new TextField(20);
ming.setTxt(txt);
frame.getContentPane().add(txt);
frame.setVisible(true);
} public JMenuBar init()
{
JMenuBar menuBar=new JMenuBar();
JMenu menu=new JMenu("音乐");
menuItem1=new JMenuItem("播放");
menu.add(menuItem1);
menuItem2=new JMenuItem("循环");
menu.add(menuItem2);
menuItem3=new JMenuItem("停止");
menu.add(menuItem3);
menuItem4=new JMenuItem("退出");
menu.add(menuItem4);
menuItem5=new JMenuItem("路径");
menu.add(menuItem5);
menuBar.add(menu);
menuItem1.addActionListener(this);
menuItem2.addActionListener(this);
menuItem3.addActionListener(this);
menuItem4.addActionListener(this);
menuItem5.addActionListener(this);
return menuBar;
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==menuItem1) sound.play();
if(e.getSource()==menuItem2) sound.loop();
if(e.getSource()==menuItem3) sound.stop();
if(e.getSource()==menuItem4) System.exit(0);
if(e.getSource()==menuItem5) sound=loadSound(txt.getText());//这行挂了
}
public AudioClip loadSound(String fileName)
{
URL url=null;
try{ url=new URL("file:"+System.getProperty("user.dir")+"/"+fileName);}
catch(MalformedURLException e){}
return Applet.newAudioClip(url);
}public void setTxt(TextField txt) {
this.txt = txt;
}
}