快速业务通道

用Java构造自己的媒体播放器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
er () { public void windowClosing (WindowEvent e) { // 用户点击窗口系统菜单的关闭按钮 // 调用dispose以执行windowClosed dispose (); } public void windowClosed (WindowEvent e) { if (player != null) player.close (); System.exit (0); } }); Menu m = new Menu ("文件"); MenuItem mi = new MenuItem ("打开"); mi.addActionListener (this); m.add (mi); m.addSeparator (); CheckboxMenuItem cbmi = new CheckboxMenuItem ("循环", false); cbmi.addItemListener (this); m.add (cbmi); m.addSeparator (); mi = new MenuItem ("退出"); mi.addActionListener (this); m.add (mi); MenuBar mb = new MenuBar (); mb.add (m); setMenuBar (mb); setSize (200, 200); setVisible (true); } public void actionPerformed (ActionEvent e) { if (e.getActionCommand ().equals ("退出")) { // 调用dispose以便执行windowClosed dispose (); return; } FileDialog fd = new FileDialog (this, "打开媒体文件", FileDialog.LOAD); fd.setDirectory (currentDirectory); fd.show (); // 如果用户放弃选择文件,则返回 if (fd.getFile () == null) return; currentDirectory = fd.getDirectory (); if (player != null) player.close (); try { player = Manager.createPlayer (new MediaLocator ("file:" + fd.getDirectory () + fd.getFile ())); } catch (java.io.IOException e2) { System.out.println (e2); return; } catch (NoPlayerException e2) { System.out.println ("不能找到播放器."); return; } if (player == null) { System.out.println ("无法创建播放器."); return; } first = false; setTitle (fd.getFile ()); player.addControllerListener (this); player.prefetch (); } public void controllerUpdate (ControllerEvent e) { // 调用player.close()时ControllerClosedEvent事件出现。 // 如果存在视觉部件,则该部件应该拆除(为一致起见, // 我们对控制面板部件也执行同样的操作) if (e instanceof ControllerClosedEvent) { if (vc != null) { remove (vc); vc = null; } if (cc != null) { remove (cc); cc = null; } return; } if (e instanceof EndOfMediaEvent) { if (loop) { player.setMediaTime (new Time (0)); player.start (); } return; } if (e instanceof PrefetchCompleteEvent) { player.start (); return; } if (e instanceof RealizeCompleteEvent) { vc = player.getVisualComponent (); if (vc != null) add (vc); cc = player.getControlPanelComponent (); if (cc != null) add (cc, BorderLayout.SOUTH); pack (); } } public void itemStateChanged (ItemEvent e) { loop = !loop; } public void paint (Graphics g) { if (first) { int w = getSize ().width; int h = getSize ().height; g.setColor (Color.blue); g.fillRect (0, 0, w, h); Font f = new Font ("DialogInput", Font.BOLD, 16); g.setFont (f); FontMetrics fm = g.getFontMetrics (); int swidth = fm.stringWidth ("*** 欢迎 ***"); g.setColor (Color.white); g.drawString ("*** 欢迎 ***", (w - swidth) / 2, (h + getInsets ().top) / 2); } // 调用超类Frame的paint()方法,该paint()方法将调用Frame包含的各个容器 // 和部件(包括控制面板部件)的paint()方法。 super.paint (g); } // 不执行背景清除操作,以免控制面板部件闪烁 public void update (Graphi

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号