⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ydqplayer.java

📁 调用JMF的java音乐播放器
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.Date;
import javax.swing.*;
import javax.swing.JOptionPane;
import java.io.*;
import javax.media.*;
class  dbplayer extends Frame implements ActionListener,ControllerListener,Runnable,ItemListener
{ Player player=null;
  Thread thread;
  File file;
  FileDialog fd;
  URL url;
   MenuItem item1,item2,item3,item4,item6,item;
   CheckboxMenuItem item5=new  CheckboxMenuItem("循环",false);
   boolean loop=false;
   String filename[]={}; 
   File dir;  
   Menu menu3;
   dbplayer()
   {super("dbplayer");
   setSize(300,300);
   setBounds(300,300,300,80);
   setVisible(true);
   setResizable(false);
   setBackground(Color.cyan);
   thread=new Thread(this);
   Menu menu1=new Menu("文件");
   Menu menu2=new Menu("播放控制");
   menu3=new Menu("播放列表");
   item1=new MenuItem("打开");
   item2=new MenuItem("播放");
   item3=new MenuItem("暂停");
   item4=new MenuItem("停止");
   item6=new MenuItem("播放列表");
   menu1.add(item1);
   menu1.addSeparator();
   menu1.add(item6);
   item1.addActionListener(this);
   item2.addActionListener(this);
   item3.addActionListener(this);
   item4.addActionListener(this);
   item5.addItemListener(this);
   item6.addActionListener(this); 
   menu2.add(item2);
   menu2.addSeparator();
   menu2.add(item3);
   menu2.addSeparator();
   menu2.add(item4);
   menu2.addSeparator();
   menu2.add(item5);
   MenuBar bar =new MenuBar();
   bar.add(menu1);
   bar.add(menu2);
   bar.add(menu3);
   setMenuBar(bar);
   addWindowListener (new WindowAdapter()
       {public void windowClosing(WindowEvent e)
          {if(player!=null)
           {player.stop();player.deallocate();
           }
          System.exit(0);}
       }
    );
    validate();
   
   }
   public void actionPerformed(ActionEvent e)
   { if(e.getSource()==item1)
     {
     fd=new FileDialog(this,"打开音乐文件",FileDialog.LOAD);
     fd.show();
     file=new File(fd.getDirectory(),fd.getFile());
     if(file==null)
     {return;}
       if(player!=null)
         {player.stop();
         player.deallocate();
         }
         if(!(thread.isAlive()))
         {thread=new Thread(this);
         }
         try
         {thread.start();
         }
         catch(Exception e4) {}
         removeAll();
        }
        else if(e.getSource()==item2)
        {if(player!=null)
          {player.start();
          }
          else
          return;
        } 
         else if(e.getSource()==item3)
        {if(player!=null)
          {player.stop();
          }
          else
          return;
        } 
         else if(e.getSource()==item4)
        {if(player!=null)
          {player.stop();
           player.setMediaTime(new Time(0));
          }
          else
          return;
        }
        else if(e.getSource()==item6)
        { 
         JFileChooser fc=new JFileChooser();
          fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
         fc.showOpenDialog(null);
         if(fc.getSelectedFile()!=null)
	     {  dir=fc.getSelectedFile();
	      FileAccept acceptCondition=new FileAccept("mp3");
	      filename=dir.list(acceptCondition);
	      }
	      for(int i=0;i<filename.length;i++)
         {item=new MenuItem(filename[i]);
         item.addActionListener(this);
         menu3.add(item); 
         }
	    }
	    else
	    {MenuItem qq=(MenuItem)e.getSource();
	      try
         {File oo=new File(dir,qq.getLabel());
         if(player!=null)
         {player.stop();
         player.deallocate();
         }
         if(!(thread.isAlive()))
         {thread=new Thread(this);
         }
         try
         {thread.start();
         }
         catch(Exception e4) {}
         removeAll();
         player=Manager.createPlayer(new MediaLocator("file:"+oo));
         player.getDuration();
         player.prefetch();
         player.addControllerListener(this);
         setTitle(oo.getName());
        }  
        catch (IOException e3) {}
        catch(NoPlayerException e2) {}
	    }
     }
   class FileAccept implements FilenameFilter
   {String str=null;
    FileAccept(String s)
    {str="."+s;
    }
    public boolean accept(File dir,String name)
    {return name.endsWith(str);
    }
   }
   public void itemStateChanged(ItemEvent e)
   {if(loop)
     loop=false;
     else
     loop=true;
   }
   public  synchronized void run()
   {  
      try
       { 
         player=Manager.createPlayer(new MediaLocator("file:"+fd.getDirectory()+fd.getFile()));
         player.getDuration();
         player.prefetch();
         player.addControllerListener(this);
         setTitle(file.getName());
        }  
        catch (IOException e3) {}
        catch(NoPlayerException e2) {}
   }
   public synchronized void controllerUpdate(ControllerEvent event)
   { player.getDuration();
     setBackground(Color.white);
      Component visualComponent,controlComponent,progressBar;
    if(event instanceof RealizeCompleteEvent)
     { if((visualComponent=player.getVisualComponent())!=null)
          add(visualComponent,BorderLayout.CENTER);
        if((controlComponent=player.getControlPanelComponent())!=null)
            if(visualComponent!=null)
             add(controlComponent,BorderLayout.SOUTH);
            else    
              add(controlComponent,BorderLayout.CENTER);   
     }     
     else if(event instanceof PrefetchCompleteEvent)
     { 
     player.start();
     }
     else if(event instanceof EndOfMediaEvent)
     {player.setMediaTime(new Time(0));
      if(loop)
      player.start();
     }
     validate();
   }
 }
 public class ydqplayer
 { public   static void main(String hh[])
   {dbplayer hhw=new dbplayer();
   }
 }  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -