📄 ydqplayer.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 + -