java课程设计报告视频播放器.pdf(2)

电脑杂谈  发布时间:2019-06-30 10:04:12  来源:网络整理

要求学生掌握:1)掌握Java 的语言规范,面向对象的核心概念和特性。2)掌握Java 的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等。3)掌握Java应用软件的开发环境和开发过程4)掌握基于Jsp 网站的开发环境和开发过程5)掌握面向对象的思想和程序设计方法。 3.2程序的设计、调试、运行的软件环境:操作系统:Windows XP (SP2)及管理软件:SQL Server 2000JDK环境:Java SE Development Kit (JDK)Version 6开发工具:Eclipse3.2运行平台:Windows、Linux各个版本、MAC等任何平台运行环境:Java SE Runtime Environment (JRE)Version 4.程序设计过程 4.1实验原理 JMF提供了一个平台无关的框架来呈现时基媒体(time-basedmedia)。JavaMediaPlayerAPI 的设计目标是支持多种标准的媒体格式,包括MPEG-1,MPEG-2,QuickTime,AVI,WAV,AU和 MIDI.使用JMF,可以同步呈现不同来源的时基媒体。

地笼捕鱼视频大全播放_java本地视频播放器_java播放音乐

7第 页[键入文字]iava 课程设计视频播放器 组员:代金龙 程飞 王小东 [键入文字] 现有的一些媒体播放器都严重依赖原生码来执行解压缩、渲染 等 计算密集型任务。而JMF API则隐藏了具体实现,只提供抽象的编程接口。 举例来说,一个用JMF制作的播放器,具体运行的过程中可能会调用到操作系统的本地方法, 但开发者写代码时可以无视本地方法的存在。 JMF Player API : 接入不同的协议和分发 (传输)机制 接入不同的媒体数据类型 定义事件模型,用于Player和应用程序间的异步通信 4.1.1数据源 (Data Source)一个DataSource 封装了媒体的地址、协议和分发的软件。一个JavaMediaPlayer包含 一个DataSource。一旦创建,这个DataSource不能被用于其他媒体的传输。 一个Player 的数据源可以用MediaLocator或URL来标示。 MdiaLocator(媒体定位器)是一个JMF类,用来描述Player播放的媒体。MediaLocator与 URL类似,并且可以从URL来创建。他们的区别在于,在Java 中,URL只有其协议是已知协 议时才能被创建,而MediaLocator则没有这个限制。

Java 媒体播放器可以播放来自多种数据源的媒体数据,包括本地、网络文件和实时广播等。 JMF支持两种不同的数据源。 PullData-Source (数据源被动的被获取)-由客户端发起数据传输并控制数据流,已知的协议包括HTTP(超文本传输协议)和本地文件。 PushData-Source (数据源主动推送)-由服务器发起数据传输并控制推送数据流。此类数据源包括广播媒体,多点传送的媒体和VOD(视频点播)。 客户端程序所能够控制的度量,取决于媒体源的类型。举个例子说,MPEG文件可以被重定 位(reposition),那么播放MPEG 的客户端程序就可以允许用户重播或者跳进至一个新时间 点;而由服务器段控制的广播媒体则不能被重定位;另外VOD协议则支持有限的用户操作, 比如一个VOD客户端程序可以允许用户跳进至新位置,但不能快进和快倒。 4.1.2 Players一个Java Media Player是一个对象。她基于时间来处理数据流,从DataSource读取 数据并在确切的时间点渲染媒体。一个Java Media Player必须实龙 程飞 王小东 [键入文字] Clock定义了基本的计时和同步操作, 她被Player 用来控制媒体的呈现。

java播放音乐_java本地视频播放器_地笼捕鱼视频大全播放

 Controller继承Clock对外提供提供如下方法:1. 管理系统资源2. 预载数据3. 提供机制 (Observable),对外发送媒体事件通知 Duration提供了检测媒体时长的途径。 Player支持标准的用户控制,并放宽了来自于Clock 的一些操作限制。多个Player共享一个公共的计时和同步模型。一个Player 的媒体时间表示了媒体流的 当前位置。每一个Player有一个TimeBase。TimeBase定义了Player 的时间流逝。当一个 Player 被执行start,他的媒体时间会被映射到time-base时间。如多个媒体要同步,那 么他们必须使用同一个TimeBase.一个Player 的用户界面可以包含一个可视组件和一个控制面板组件 (control- panel component)。我们用的时候可以选择实现一个自定义的用户界面,或者使用Player 的默认 的控制面板组件。一般来说,一个Player在能够呈现媒体之前,必须先执行一序列的操作。而这些操作 有可能会耗费一定的时间,所以JMF定义了一些操作状态,并且提供了状态转换的操作机制。

cim 操作的http传输规范:基于http的cim操作规范定义了cim操作到http的映射关系,允许cim实施的互操作在开放的、标准的方式下进行,它定义了在对象上可执行的操作(删除、创建、修改对象等),以及在http协议上传输这些操作时的xml编码方式和响应状态。referencequeue队列的作用就是reference引用的对象被回收时,reference就被放到了这个队列里面,然后我们就可以在这个referencequeue拿到reference,执行我们自己的操作(至于什么操作就看你想怎么用了),所以这个队列起到一个对象被回收时通知的作用。对于一个给定的事件,uicontrol会调用sendaction:to:forevent:来将行为消息转发到uiapplication对象,再由uiapplication对象调用其sendaction:to:fromsender:forevent:方法来将消息分发到指定的target上,而如果我们没有指定target,则会将事件分发到响应链上第一个想处理消息的对象上。

java本地视频播放器_java播放音乐_地笼捕鱼视频大全播放

他们表示Player 的一些属性数值发生了变化。这类事件通常是对一些方法调用的回馈。例如, 一个Player 的setRate方法被调用,他会抛出一个 RateChangeEvent. 转换事件(TransitionEvents) 让我们的程序能够响应Player 的状态变化。 当Player从一个状态转换到另一个状态时,就会抛出一个转换事件。 (在 1.4 中,我们会提供更多的关于Player状态的信息) 当player关闭时,则会抛出关闭事件(ControllerClosedEvents)。当一个Player不再可用时,抛出 ControllerClosedEvent.ControllerErrorEvent(控制器错误事件)则是关闭事件的一个特例。我们写程序时,通过控制器错误事件,可以对Player故障作出响应,从而增进用户体验。 4.1.4 Player StatesJavaMediaPlayer有6种状态。Clock 接口定义了两种主要的状态:Stopped和Started。 在普通操作中,Plyaer在到达Started状态前,会逐个通过上图中的每一个状态。

懒汉式单例模式下,首次加载singletontest类时,并不会立即创建实例,而是只有通过调用getinstance方法,才会创建该类的实例并返回此实例,每次调用getinstance方法都只会获得同一个实例。加载资源文件后,程序就可以调用resourcebundle实例对象的getstring方法获取指定的资源信息名称所对应的值。如果cron守护进程没有发现相应的crontab文件就转入“休眠”状态,释放系统资源,所以该后台进程占用资源极少。

此时播放器在为呈龙 程飞 王小东 [键入文字] 当Player 结束预取,将转入 Prefetched(预取完成 ) 状态。此时Player 已经准备开始播放但尚为实际开始。 调用start方法将使Player转入Started状态。此时,Player 的媒体时间被映射到time-base时间,并且clock开始运行。此时播放器有可能会等待一个恰当的时间来呈现媒体数据。当player从一个状态转入另一个状态时,会抛出 TransitionEvents(转换事件),我们 可以通过实现 ControllerListener接口来这些时间并作出恰当的响应。当播放器开始Realizing和Prefetching的时候,我们可以使用事件报告机制对Player 进行管理,在调用Player方法之前,我们可以先检查Player状态,在作出恰当的操作。

如果调用失败,一般抛出异常或者返回错误码,则需要调用本地注册的逆向服务(本地存款服务),。●后置异常通知:在切入点选择的连接点处的方法抛出异常返回时执行的通知,必须是连接点处的方法抛出任何异常返回时才调用异常通知。另外,c中的malloc开辟空间时如果出现了内存耗尽的情况的话会直接返回null,而c++中的new会抛出异常,不过这里我们也可以声明其不抛出异常使其在内存耗尽的情况下返回null.。

 有时,我们请求的信息是不可用的。例如:Player在播完一个媒体之前,可能不知道媒体的时长,这时如果我们调了getDuration(),getDuration会返回DURATION_UNKNOWN.当媒体被播放完一次,再调getDuration时,则会返回正确的时长。第11页[键入文字]iava 课程设计视频播放器 组员:代金龙 程飞 王小东 [键入文字]4.2 程序设计图界面级相关组件设置与初进行相关的组件添加,关联,始化方法:贴图等初始化工作setComponentProperty()List 中右击鼠标事件处理,弹出选择操作菜单:mousePressed();List 中双击鼠标事件处理,开始播放选中文件:mouseClicked();List列表框中鼠标事件监单击List中从列表删除事件:menuItem_delete.addMouseListener();听 及 处 理 方 法 :addPlayListListener()单击List中播放暂停事件:menuItem_playSelect.addMouseListener();单击List中向列表中添加事件:menuItem_addFile.addMouseListener();单击List中清除播放列表事件:menuItem_deleteAll.addMouseListener();左键单击播放暂停按钮事件处理:but_Play.addActionListener();左键单击停止按钮事件处理:but_Stop.addActionListener();界面上控制按钮单击事件左键单击上一个按钮事件处理:but_Prior.addActionListener();监 听 及 处 理 方 法 :addPlayBottonListener() 左键单击下一个按钮事件处理:but_next.addActionListener();左键单击快退按钮事件处理:but_quickBack.addActionListener();左键单击快进按钮事件处理:but_quickForward.addActionListener();左键单击静音按钮事件处理:but_Sound.addActionListener();左键单击文件按钮事件处理:file.addMouseListener();左键单击单曲播放按钮事件处理:single_play.addMouseListener();左键单击单曲循环按钮事件处理:single_loop.addMouseListener();构 开造左键单击循环播放按钮事件处理: loop_play.addMouseListener(); 始函对菜单条的鼠标事件监 :数听 及 处 理 方 法 :左键单击随机播放按钮事件处理: random_play.addMouseListener(); 对调addPlayMenuListener() 左键单击播放暂停按钮事件处理:playOrpause.addActionListener(); 象用 实成左键单击停止按钮事件处理:stop.addActionListener(); 例员左键单击打开按钮事件处理:open.addActionListener(); 化方法左键单击退出按钮事件处理:exit.addActionListener();左键单击关于按钮事件处理:about.addActionListener();左键单击帮助按钮事件处理:help_.addActionListener();第12页[键入文字]iava 课程设计视频播放器 组员:代金龙 程飞 王小东 [键入文字]单击播放暂停按钮事件处理:menuItem_play.addActionListener();单击停止按钮事件处理:menuItem_stop.addActionListener();对播放界面上播放视频时右击事件及处理方法:单击快进按钮事件处理:menuItem_skinForward.addActionListener();addRightClickListener()单击快退按钮事件处理:menuItem_rewind.addActionListener();单击退出按钮事件处理:menuItem_exit.addActionListener();对播放视频时改变窗体大小事件及处理方法:Container.addCompnentLister();对用户拖动进度条事件监Jslider_progress.addMouseLiatener()听及处理方法:初始化播放器,准备开始播放视频文件:startPlayer(StringmediaLocation);一个内部类进行视频文件的相关操作:classPlayerEventHandler extendsControllerAdapter ; 4.3 核心代码: /******************************************************/ public ppp(String s){ //构造函数super(s);setComponentProperty();addPlayListListener();addPlayButtonListener();addPlayMenuListener();addRightClickListener();addFrameChangeListener(); } //构造函数结束 /******************************************************/ publicvoid addPlayListListener(){ //对list列表中鼠标事件进行并处理list.addMouseListener(new MouseAdapter(){//list列表事件publicvoid mousePressed(MouseEvent e) {//super.mousePressed(e);System.out.println(e.getModifiers());//通过这个函数返回值区分是 单击还是双击int mods =e.getModifiers();if (mods==4){//4时为右击popupMenuList.add(menuItem_playSelect);popupMenuList.add(menuItem_delete);popupMenuList.add(menuItem_Addfile);popupMenuList.add(menuItem_deleteAll);popupMenuList.show(list, e.getX(), e.getY());}第13页[键入文字]iava 课程设计视频播放器 组员:代金龙 程飞 王小东 [键入文字]}publicvoid mouseClicked(MouseEvent e){if(e.getClickCount()==2){//在列表框中双击事件for(int i=0;i<model.getSize();i++)//在文件目录中寻找到选中的 文件名if(fileDirection.get(i).toString().endsWith(list.getSelectedValue().toString()))try {startPlayer(fileDirection.get(i).toURL().toString()); //开始播放选中文件but_play.setIcon(new ImageIcon("pause.png"));play_temp =true;IsPlaying =true;break;} catch (MalformedURLException E) {E.printStackTrace();}}}});menuItem_delete.addMouseListener(new MouseAdapter(){//单击list中 “从列表中删除”事件publicvoid mousePressed(MouseEvent e) {model.removeElement(list.getSelectedValue());fileName.removeElement(list.getSelectedValue());fileDirection.removeElement(list.getSelectedValue());}});menuItem_playSelect.addMouseListener(new MouseAdapter(){//单击list 中“播放选中文件”事件publicvoid mousePressed(MouseEvent e) {try {for(int i=0;i<model.getSize();i++)//在文件目录中寻找到选中的 文件名if(fileDirection.get(i).toString().endsWith(list.getSelectedValue().toString())){startPlayer(fileDirection.get(i).toURL().toString());System.out.println(fileDirection.get(i).toURL().toString());but_play.setIcon(new ImageIcon("pause_.png"));play_temp =true;IsPlaying =true;}} catch(MalformedURLException e1) {e1.printStackTrace();}}});menuItem_Addfile.addMouseListener(new MouseAdapter(){//单击list中第14页[键入文字]iava 课程设计视频播放器 组员:代金龙 程飞 王小东 [键入文字] “向列表中添加”事件publicvoid mousePressed(MouseEvent e) {JFileChooserfileChooser =new JFileChooser();//实例化文件选择器fileChooser.setMultiSelectionEnabled(true);//可以同时选中多 个文件fileChooser.setFileFilter(new MyFileFilter()); //设置文件选择时选 择的文件的默认类型fileChooser.showOpenDialog(ppp.this);//显示对话框File[] mediaFiles=fileChooser.getSelectedFiles(); //得到选择的文件for(int i=0;i<mediaFiles.length;i++){fileDirection.add(mediaFiles[i]);fileName.add(mediaFiles[i].getName());model.addElement(mediaFiles[i].getName());String path="file:/"+mediaFiles[i].getPath(); //必须加"file:/" 才能播放选中的文件System.out.println(path);startPlayer(path);but_play.setIcon(new ImageIcon("pause.png"));play_temp =true;IsPlaying =true;}}});menuItem_deleteAll.addMouseListener(new MouseAdapter(){//单击list中 “清除播放列表”事件publicvoid mousePressed(MouseEvent e) {model.removeAllElements();fileName.removeAllElements();fileDirection.removeAllElements();}});} /******************************************************/ publicvoid addPlayMenuListener(){//对菜单条的鼠标事件进行处理file.addMouseListener(new MouseAdapter(){publicvoid mousePressed(MouseEvent e) {//file.remove(open);//file.remove(exit);//file.add(open);//file.add(exit);}});single_play.addActionListener(newActionListener(){ //打开退出按钮事件处理publicvoid actionPerformed(ActionEvent event) {isSingle_play=true;isSingle_loop=false;isLoop_play=false;isRandom_play=false;}});第15页 [键入文字]iava 课程设计视频播放器 组员:代金龙 程飞 王小东 [键入文字] single_loop.addActionListener(new ActionListener(){//打开退出按钮事件处理publicvoid actionPerformed(ActionEvent event) {isSingle_play=false;isSingle_loop=true;isLoop_play=false;isRandom_play=false;} }); loop_play.addActionListener(newActionListener(){ //打开退出按钮事件处理publicvoid actionPerformed(ActionEvent event) {isSingle_play=false;isSingle_loop=false;isLoop_play=true;isRandom_play=false;} }); random_play.addActionListener(newActionListener(){ //打开退出按钮事件处理publicvoid actionPerformed(ActionEvent event) {isSingle_play=false;isSingle_loop=false;isLoop_play=false;isRandom_play=true;} }); random_play.setSelected(true);//默认为随机播放 playOrpause.addActionListener(newActionListener(){//播放暂停按钮事件处理publicvoid actionPerformed(ActionEvent event) {if(player==null){System.out.println("你没有开始播放任何文件");return;}if (play_temp) {player.start();but_play.setIcon(new ImageIcon("pause_.png"));play_temp =false;} else {player.stop();but_play.setIcon(new ImageIcon("play_.png"));play_temp =true;}} }); stop.addActionListener(newActionListener(){//单击停止按钮事件处理publicvoid actionPerformed(ActionEvent event) {if(player==null){System.out.println("你没有开始播放任何文件");return;}if(timeThread !=null)timeThread.stop();//不做这一步jslider_progress还会变化第16页[键入文字]iava 课程设计视频播放器 组员:代金龙 程飞 王小东 [键入文字]player.stop();player.close();panel_up.remove(visualMedia);//不做这一步看不到gif图画jslider_progress.setValue(0);}});open.addActionListener(newActionListener() {//打开文件按钮事件处理//@SuppressWarnings("deprecation")publicvoid actionPerformed(ActionEvent event) {JFileChooserfileChooser =new JFileChooser();//实例化文件选择器fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//设置文件 打开模式为仅打开文件int result =fileChooser.showOpenDialog(ppp.this);//显示对话框if (result ==JFileChooser.APPROVE_OPTION) {//得到用户行为mediaFile =fileChooser.getSelectedFile(); //得到选择的文件fileDirection.add(fileChooser.getSelectedFile());fileName.add(fileChooser.getSelectedFile().getName());model.addElement(fileChooser.getSelectedFile().getName());list.setSelectedValue(fileChooser.getSelectedFile().getName(), true);}if (mediaFile !=null) {try {startPlayer(mediaFile.toURL().toString());//转换成URL后再转 换成字符串才行} catch (MalformedURLException e) {e.printStackTrace();} //开始播放打开的文件}}});exit.addActionListener(newActionListener(){//打开退出按钮事件处理publicvoid actionPerformed(ActionEvent event) {System.exit(0);}});about.addActionListener(newActionListener(){ //打开关于按钮事件处理publicvoid actionPerformed(ActionEvent event) {JFramef =new JFrame("Message");f.setBounds(520, 400, 400, 100);//设置jframe显示的位置,长宽Container container=f.getContentPane();f.setLayout(null);JTextAreajTextArea =new JTextArea("Java视频播放器原始版");String string="\n"+"组员:程飞 (20065265),代金龙 (20065231)";jTextArea.append(string);jTextArea.setBounds(0, 0, 400, 70);jTextArea.setEditable(false); //设置文本为只读的container.add(jTextArea);f.setVisible(true);}第17页[键入文字]iava 课程设计视频播放器 组员:代金龙 程飞 王小东 [键入文字]});help_.addActionListener(newActionListener(){//打开关于按钮事件处理publicvoid actionPerformed(ActionEvent event) {JFramef =new JFrame("Message");f.setBounds(520, 400, 400, 150);//设置jframe显示的位置,长宽Container container=f.getContentPane();f.setLayout(null);JTextAreajTextArea =new JTextArea("使用说明\n");String string="各个按钮的具体功能:"+"\n"+"1.双击屏幕全屏,再次双击 回到原来大小"+"\n"+"2.双击播放列表文件可直接播放"+"\n"+"3.右击播放列表可添加或删除列表";jTextArea.append(string);jTextArea.setBounds(0, 0, 400, 150);jTextArea.setEditable(false); //设置文本为只读的container.add(jTextArea);f.setVisible(true);}});} /******************************************************/publicvoid addFrameChangeListener(){//对改变窗体大小事件进行处理container.addComponentListener(new ComponentAdapter(){//处理窗体大小改变 时其它组建跟随改变publicvoid componentResized(ComponentEvent e){intWIDTH=getWidth();int HEIGHT=getHeight();panel_up.setBounds(0,0,WIDTH-140, HEIGHT-125);panel_playList.setBounds(WIDTH-140,0,140, HEIGHT-125);panel_down.setBounds(0,HEIGHT-125,WIDTH, 125);jslider_progress.setSize(WIDTH, 20);}});} /******************************************************/ publicvoid startPlayer(String mediaLocation) {timeThread=new ControlProgrecess();//一个线程管理进度条. (写在这里可以使得 以任意一种方法播放视频时都可以与进度条相关联)timeThread.start();if (player !=null)//如果播放器非空则移去先前的播放器组件if (visualMedia !=null)panel_up.remove(visualMedia); //如果对象visualMedia非空则移去if (mediaControl !=null) {panel_down.remove(mediaControl); //如果对象mediaControl非空则移去player.close(); //关闭播放器}MediaLocatormediaLocator =new MediaLocator(mediaLocation); //媒体定位器if (mediaLocator ==null) {System.out.println("打开文件错误");//显示错误信息return;}try {player = Manager.createPlayer(mediaLocator); //得到播放器实例第18页[键入文字]iava 课程设计视频播放器 组员:代金龙 程飞 王小东 [键入文字]player.addControllerListener(new PlayerEventHandler()); //增加播放控制器player.realize();} catch (Exception ex) {ex.printStackTrace();System.out.println("打开错误");//显示错误信息}}/******************************************************///处理声音的开/关及进度条的拖动事件publicvoid stateChanged(ChangeEvent e) {if(e.getSource()==jslider_sound)player.getGainControl().setLevel((float)jslider_sound.getValue()/100);if(e.getSource()==jslider_progress){if (player !=null) {controlSliderTime();}}}/******************************************************/private class PlayerEventHandler extends ControllerAdapter {//一个内部类来进 行视频文件的相关操作publicvoid realizeComplete(RealizeCompleteEvent realizeDoneEvent) {player.prefetch(); //预取媒体数据}//完成预取媒体数据后,开始播放媒体publicvoidprefetchComplete(PrefetchCompleteEvent prefetchDoneEvent) {getMediaComponents();validate();player.start(); //开始播放媒体//这儿才能得到准确的文件播放时间newTime=(float)player.getMediaTime().getSeconds();fileTime=(float)player.getDuration().getSeconds();}//如果媒体播放完毕,重新设置媒体时间并停止媒体播放器publicvoid endOfMedia(EndOfMediaEvent mediaEndEvent) {/*player.setMediaTime(new Time(0)); //重新设置媒体时间player.stop();// 停止媒体播放but_play.setIcon(new ImageIcon("play_.png"));play_temp =true;*/if(isSingle_play==true)//如果单曲播放按钮被选中{player.stop();}if(isSingle_loop==true){//如果单曲循环按钮被选中boolean isThisOne;for(int i=0;i<model.getSize();i++){//因为只有fileDirection中保存了文件 路径和文件名字,所以遍历它isThisOne=fileDirection.get(i).toString().endsWith(list.getSelectedValue().toString());if(isThisOne==true){try {第19页[键入文字]iava 课程设计视频播放器 组员:代金龙 程飞 王小东 [键入文字]startPlayer(fileDirection.get(i).toURL().toString());list.setSelectedIndex(i);return;} catch (MalformedURLException e) {e.printStackTrace();}}}}if(isLoop_play==true){//如果循环按钮被选中boolean isThisOne;for(int i=0;i<model.getSize();i++){//因为只有fileDirection中保存了文件 路径和文件名字,所以遍历它isThisOne=fileDirection.get(i).toString().endsWith(list.getSelectedValue().toString());if(isThisOne==true){try {startPlayer(fileDirection.get(i+1).toURL().toString());list.setSelectedIndex(i+1);return;} catch (MalformedURLException e) {e.printStackTrace();}}}}if(isRandom_play==true){//如果随机按钮被选中int index=(int)((Math.random()*model.getSize()));try {startPlayer(fileDirection.get(index).toURL().toString());list.setSelectedIndex(index);return;} catch (MalformedURLException e) {e.printStackTrace();}}}}/****************************************************/publicvoidgetMediaComponents() {visualMedia =player.getVisualComponent(); //取得视频显示组件visualMedia.validate();//如果对象visualMedia非空则加入到窗口内容窗格if (visualMedia !=null) {panel_up.add(visualMedia, BorderLayout.CENTER);//setVisible(true); //设置窗口为可视}mediaControl =player.getControlPanelComponent(); //取得播放控制组件//如果对象visualMedia非空则加入到窗口内容窗格if (mediaControl !=null){mediaControl.setBounds(0, 5,540,20);panel_down.add(mediaControl);}第20页[键入文字]iava 课程设计视频播放器 组员:代金龙 程飞 王小东 [键入文字]visualMedia.addMouseListener(new MouseAdapter(){//可视化视频文件 事件publicvoid mousePressed(MouseEvent e) {//super.mousePressed(e);System.out.println(e.getModifiers());//通过这个函数返回值区分是单击 还是双击int mods =e.getModifiers();if (mods==4 && (e.getSource() ==visualMedia) ||(e.getSource() == panel_up)){//4时为右击rightClickList.add(menuItem_paly);rightClickList.add(menuItem_stop);rightClickList.add(menuItem_controlPlayer);rightClickList.add(menuItem_allScreen);rightClickList.add(menuItem_exit);menuItem_controlPlayer.add(menuItem_skinForwind);menuItem_controlPlayer.add(menuItem_rewind);if (e.getSource() ==visualMedia) {rightClickList.show(visualMedia, e.getX(), e.getY());}if ((mods &4) != 0&& e.getSource() ==panel_up) {rightClickList.show(panel_up, e.getX(), e.getY());}}}publicvoid mouseClicked(MouseEvent e){//鼠标单击播放视频界面事件if(e.getClickCount()==1&& (e.getButton()==MouseEvent.BUTTON1)) // 鼠标左键单击播放视频界面时处理事件{if (play_temp) {player.start();but_play.setIcon(new ImageIcon("pause_.png"));play_temp =false;} else {player.stop();but_play.setIcon(new ImageIcon("play_.png"));play_temp =true;}}if(e.getClickCount()==2&& (


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-109463-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 橘美琴
      橘美琴

      生产这种要多少给多少

    热点图片
    拼命载入中...