全部展开
你好房东,你可以试试这个
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
导入javax.media. *;
导入javax.swing. *;
导入java.awt. *;
导入java.awt.event. *;
公共类MediaPlayer扩展了JFrame实现的ActionListener,
ItemListener,ControllerListener {
字符串标题;
布尔优先=真,循环=假;
组件vc,cc;
字符串currentDirectory = null;
//构造函数,其中包括设置侦听器以响应窗口事件.
MediaPlayer(字符串标题){
super(标题);
/ *执行关闭按钮. . * /
addWindowListener(新的WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
}
public void windowClosed(WindowEvent e){
如果(玩家!=空)
player.close();
System.exit(0);
}
});
//调用程序菜单栏以完成菜单布局的方法成员
setupMenu();
setSize(400,400);
setVisible(true);
}
//此方法用于设置程序菜单栏
公共无效setupMenu(){
//设置菜单
菜单f =新菜单(“文件”);
//将菜单项添加到设置菜单
MenuItem mi =新的MenuItem(“打开”);
f.add(mi);
mi.addActionListener(this);
f.addSeparator();
CheckboxMenuItem cbmi =新的CheckboxMenuItem(“循环”,false);
cbmi.addActionListener(this);
f.add(cbmi);
f.addSeparator();
MenuItem ee =新的MenuItem(“退出”);
ee.addActionListener(this);
f.add(ee);
f.addSeparator();
菜单l =新菜单(“播放列表”);
菜单c =新菜单(“播放控制”);
MenuItem move = new MenuItem(“播放”);
move.addActionListener(this);
c.add(移动);
c.addSeparator();
MenuItem暂停=新的MenuItem(“暂停”);
pause.addActionListener(this);
c.add(暂停);
c.addSeparator();
MenuItem stop =新的MenuItem(“停止”);
stop.addActionListener(this);
c.add(停止);
c.addSeparator();
//设置菜单栏
MenuBar mb =新的MenuBar();
mb.add(f);
mb.add(c);
mb.add(l);
//将完成的菜单栏提供给当前程序的窗口;
setMenuBar(mb);
}
//动作时间响应成员;捕获发送到该对象的各种事件;
public void actionPerformed(ActionEvent e){
// TODO自动生成的方法存根
字符串cufile,selectfile,currentDirectory;
if(e.getActionCommand(). 等于(“ Exit”)){
//调用处置以执行windowClosed
dispose();
返回;
}
//这表明辩护人已选择“播放”命令;
//如果当前有可以播放的文件,则执行播放命令;
if(e.getActionCommand(). 等于(“ Play”)){
如果(玩家!=空){
player.start();
}
返回;
}
//如果当前正在播放文件,则暂停;
if(e.getActionCommand(). 等于(“ pause”)){
如果(玩家!=空){
player.stop();
}
返回;
}
//停止命令的响应;
if(e.getActionCommand(). 等于(“ stop”)){
如果(玩家!=空){
player.stop();
player.setMediaTime(新时间(0));
}
返回;
}
//用户选择要播放的媒体文件
if(e.getActionCommand(). 等于(“ Open”)){
FileDialog fd =新的FileDialog(此为“打开媒体文件”,FileDialog.LOAD);
// fd.setDirectory(currentDirectory);
fd.setVisible(true);
//如果用户放弃选择文件java本地视频播放器,请返回
if(fd.getFile()== null){
返回;
}
//所选文件的名称及其路径名已保存,供以后使用
//还要设置当前文件夹路径
selectfile = fd.getFile();
currentDirectory = fd.getDirectory();
cufile = currentDirectory + selectfile;
///将用户选择的文件作为菜单项添加到播放列表中,菜单项名称为文件名;
//单击后给出的命令字符串是文件的完整路径名
MenuItem mi =新的MenuItem(选择文件);
mi.setActionCommand(cufile);
MenuBar mb = getMenuBar();
Menu m = mb.getMenu(2);
mi.addActionListener(this);
m.add(mi);
}其他{
//程序逻辑将运行到下一次,表明用户已在“播放列表”中选择了媒体文件
//此时,您可以通过以下操作获取文件的完整路径名
cufile = e.getActionCommand();
selectfile = cufile;
}
//如果存在玩家,请先关闭它,然后再重新创建
///在创建播放器时需要捕捉一些例外情况
如果(玩家!=空){
player.close();
}
尝试{
player = Manager.createPlayer(新的MediaLocator(“文件: ” + cufile));
}捕获(异常e2){
System.out.println(e2);
返回;
} / *
* catch(NoPlayerException e2){System.out.println(“找不到播放器”);
* return;}
* /
如果(玩家==空){
System.out.println(“无法创建播放器”);
返回;
}
first = false;
setTitle(选择文件);
//设置处理播放控制器的实际对象;
/ ** /
player.addControllerListener(this);
player.prefetch();
}
//菜单状态更改事件的响应功能;
public void itemStateChanged(ItemEvent arg0){
// TODO自动生成的方法存根
}
public static void main(字符串[] args){
// TODO自动生成的方法存根
新的MediaPlayer(“播放器”);
}
//调用绘图功能以绘制界面
//公共无效更新(){
//}
//绘图功能成员
//公共无效涂料(图形g){
//}
公共无效controllerUpdate(ControllerEvent e){
// TODO自动生成的方法存根
容器tainer = getContentPane();
//当调用player.close()时发生ControllerClosedEvent事件
//如果有视觉部分,则应将其删除(为了保持一致,我们还将在控制面板上执行相同的操作,并在下次构造它)
if(作为ControllerClosedEvent的instance){
如果(vc!= null){
删除(vc);
vc = null;
}
如果(cc!= null){
删除(cc);
cc = null;
}
}
//在播放结束时,将播放指针放在文件顶部. 如果设置了循环播放,请重新启动播放器;
if(EndOfMediaEvent的instance){
player.setMediaTime(新时间(0));
如果(循环){
player.start();
}
返回;
}
//在PrefetchCompletEvent事件发生后调用开始,并开始正式播放
if(例如PrefetchCompleteEvent的实例){
player.start();
返回;
}
//此事件表明已确定要播放的资源;此时,媒体的图片应清晰可见
//如果显示java本地视频播放器,则同时在窗口中显示播放器控件;
if(作为RealizeCompleteEvent的实例){
//如果介质中有图像,则将相应的图像组件加载到表单中;
vc = player.getVisualComponent();
如果(vc!= null)
tainer.add(vc,BorderLayout.CENTER);
//将相应的控制器组件加载到表单中;
cc = player.getControlPanelComponent();
cc.setBackground(Color.blue);
如果(cc!= null)
tainer.add(cc,BorderLayout.SOUTH);
//某些特殊媒体在播放过程中提供了其他控制方式,并将控制器添加到窗口中;
/ *
* gc = player.getGainControl(); gcc = gc.getControlComponent();
*如果(gcc!= null)tainer.add(gcc,BorderLayout.NORTH);
* /
//根据媒体文件中是否有图像设置相应的窗口大小
如果(vc!= null){
pack();
返回;
}其他{
setSize(300,75);
setVisible(true);
返回;
}
}
}
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-151047-1.html