Java-MediaPlayer源码java下载手机版「Java-MediaPlayer源码」
导读:import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.FileDialog; import java.awt.Font; import java.awt.F...
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.FileDialog;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.ControllerClosedEvent;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.GainControl;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;
import javax.sound.midi.ControllerEventListener;
import javax.sound.midi.ShortMessage;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
public class MediaPlayer extends JFrame
implements ActionListener,ControllerEventListener, ControllerListener
{
/**
*
*/
private static final long serialVersionUID = 1L;
MediaPlayer(String title)
{
setTitle(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e)
{
dispose();
}
public void windowClosed(WindowEvent e)
{
System.exit(0);
}
});
setupMenu();
setSize(400,200);
setVisible(true);
}
public void setupMenu()
{
JMenu Jm=new JMenu("文件");
JMenuItem mi=new JMenuItem("打开");
mi.addActionListener(this);
Jm.add(mi);
Jm.addSeparator();
JCheckBoxMenuItem cbmi=new JCheckBoxMenuItem("循环",true);
cbmi.addActionListener(this);
Jm.add(cbmi);
Jm.addSeparator();
mi=new JMenuItem("退出");
mi.addActionListener(this);
Jm.add(mi);
//===
JMenu l=new JMenu("播放列表");
JMenu c=new JMenu("播放控制");
JMenuItem move=new JMenuItem("播放");
move.addActionListener(this);
c.add(move);
c.addSeparator();
JMenuItem parse=new JMenuItem("暂停");
parse.addActionListener(this);
c.add(parse);
c.addSeparator();
JMenuItem stop=new JMenuItem("停止");
stop.addActionListener(this);
c.add(stop);
//===
JMenuBar mb=new JMenuBar();
mb.add(Jm);
mb.add(c);
mb.add(l);
setJMenuBar(mb);
}
public void actionPerformed(ActionEvent e)
{
String cufile,selectfile,currentDirectory = null;
//退出命令
if(e.getActionCommand().equals("退出"))
{
dispose();
return;
}
//播放命令
if(e.getActionCommand().equals("播放"))
{
if(player!=null)
player.start();
return;
}
if(e.getActionCommand().equals("暂停"))
{
if(player!=null)
player.stop();
return;
}
if(e.getActionCommand().equals("停止"))
{
if(player!=null)
{
player.stop();
player.setMediaTime(new Time(0));
}
return;
}
if(e.getActionCommand().equals("循环"))
{
loop=!loop;
return;
}
//====
if(e.getActionCommand().equals("打开"))
{
FileDialog fd=new FileDialog(this,"打开媒体文件",FileDialog.LOAD);
fd.setDirectory(currentDirectory);
fd.setVisible(true);
//==
if (fd.getFile()==null)
{
return;
}
selectfile=fd.getFile();
currentDirectory=fd.getDirectory();
cufile=currentDirectory+selectfile;
//====
}
else
{
cufile=e.getActionCommand();
selectfile=cufile;
}
if(player!=null)
{
player.close();
}
try{
player=Manager.createPlayer(new MediaLocator("file:"+cufile));
JMenuItem mi=new JMenuItem(selectfile);
mi.setActionCommand(cufile);
JMenuBar mb=getJMenuBar();
JMenu m=mb.getMenu(2);
mi.addActionListener(this);
m.add(mi);
}
catch(java.io.IOException e2)
{
System.out.println(e2);
return;
}
catch(NoPlayerException e2)
{
JOptionPane.showMessageDialog(null, "无法播放","提示",JOptionPane.ERROR_MESSAGE);
return;
}
if(player==null)
{
JOptionPane.showMessageDialog(null, "无法创建播放器","提示",JOptionPane.ERROR_MESSAGE);
return;
}
first=false;
setTitle(selectfile);
player.addControllerListener(this);
player.prefetch();
}
public void controllerUpdate(ControllerEvent e)
{
Container tainer=getContentPane();
//
if(e instanceof ControllerClosedEvent)
{
if(vc!=null)
{
remove(vc);
vc=null;
}
if(cc!=null)
{
remove(cc);
cc=null;
}
return;
}
if(e instanceof EndOfMediaEvent)
{
player.setMediaTime(new Time(0));
if(loop)
{
player.start();
}
return;
}
if (e instanceof PrefetchCompleteEvent)
{
player.start();
return;
}
if(e instanceof RealizeCompleteEvent)
{
vc=player.getVisualComponent();
if (vc!=null)
{
tainer.add(vc,BorderLayout.CENTER);
}
cc=player.getControlPanelComponent();
cc.setBackground(Color.blue);
if(cc!=null)
{
tainer.add(cc,BorderLayout.SOUTH);
}
gc=player.getGainControl();
gcc=gc.getControlComponent();
if (gcc!=null)
{
tainer.add(gcc,BorderLayout.NORTH);
}
if(vc!=null)
{
pack();
return;
}
else
{
setSize(400,85);
setVisible(true);
return;
}
}
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
super.paint(g);
if(first)
{
int w=getSize().width;
int h=getSize().height-50;
g.setColor(Color.black);
g.fillRect(0, 50, w, h);
Font f=new Font("DialogInput",Font.BOLD,18);
g.setFont(f);
FontMetrics fm=g.getFontMetrics();
int swidth=fm.stringWidth("简单媒体播放器 ");
g.setColor(Color.white);
g.drawString("简单媒体播放器", (w-swidth)/2, (h+50+getInsets().top)/2);
}
}
public static void main(String[] args) {
try {
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");//Nimbus风格,jdk6 update10版本以后的才会出现
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//当前系统风格
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");//Motif风格,是蓝黑
//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());//跨平台的Java风格
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");//windows风格,在linux下运行时不成功
//UIManager.setLookAndFeel("javax.swing.plaf.windows.WindowsLookAndFeel");//windows风格
//UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");//java风格
//UIManager.setLookAndFeel("com.apple.mrj.swing.MacLookAndFeel");//待考察,
} catch (Exception e) {
e.printStackTrace();
}
new MediaPlayer("简单媒体播放器");
}
@Override
public void controlChange(ShortMessage event) {
// TODO Auto-generated method stub
}
private Player player=null;
private boolean first=false;
private Component vc;
private Component cc;
private GainControl gc;
private Component gcc;
private boolean loop=true;
嵊州版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com