我做了一个音乐播放器,用户在文本框输入内容就会播放
但是我发现播放路径必须是常量字符串("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);
}
}

解决方案 »

  1.   

    TextField txt=new TextField(20);你定义在main里面,怎么用得到?
      

  2.   


    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);
    }
    }
      

  3.   

    3楼的编译通过了,但是执行不了F:\源码\Java源码\音乐播放器>javac Mingqu.javaF:\源码\Java源码\音乐播放器>java Mingqu
    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源码\音乐播放器>
      

  4.   

    package je.test;
    你加了包啊,
    编译:
    javac -d . Mingqu.java
    要不你自己建文件夹放进去。
    运行:
    java je.test.MIngqu
      

  5.   

    问题依旧:F:\源码\Java源码\音乐播放器>javac -d . Mingqu.javaF:\源码\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源码\音乐播放器> 
      

  6.   


    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;

    }