岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Java >> 核心技术 >> JavaMedia >> Java正文
用Java构造自己的媒体播放器
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-7-22 17:29:53

  一、概述
  
  
  首先我们来看看构造这个媒体播放器要达到什么样的目标,确定了目标也就确定了代码量和程序的复杂程度。本文的媒体播放器要达到如下目标:
  
  
  
  媒体播放器是一个菜单驱动的简单AWT应用。
  
  媒体播放器包含一个“文件”菜单,文件菜单包含三个菜单项:
  
  
  
  “打开”,用来打开媒体文件。
  
  “循环”,是播放一次(默认),还是重复播放。
  
  “退出”,退出程序。
  
  
  
  媒体播放器可以在多种平台上运行。
  
  媒体播放器的核心功能通过JMF(Java Media Framework)API实现。JMF扩展了J2SE平台的多媒体能力,允许Java应用和Applet截取、回放、转换包括音频和视频在内的多种媒体。JMF支持多种媒体格式,具体请参见Supported Media Formats and Capture Devices。
  二、初步设计
  
  
  我们把这个媒体播放器的设计分成两个部分:GUI设计,伪代码设计。在GUI设计中,我们要了解构成程序的各个GUI部件。在伪代码设计中,我们用自然语言写出程序运行原理。
  
  
  2.1 GUI设计
  
  
  媒体播放器的用户界面包含一个主窗口、一个菜单和一个打开文件的对话框。首先我们来看看主窗口的设计。主窗口应该把窗口标题显示为“媒体播放器1.0”,显示“文件”菜单,显示彩色背景的“欢迎”信息。图一显示了程序刚启动时的主窗口。
   
  图一:媒体播放器的主窗口
  
  “文件”菜单包含三个菜单项。“打开”菜单显示一个对话框,用来选择媒体文件的位置。“循环”菜单决定媒体文件只播放一次(默认)还是反复播放(当菜单被选中)。最后,“退出”菜单关闭程序。另外,点击主窗口右上角的关闭按钮也可以关闭程序。请参见图二。
   
  图二:“文件”菜单
  
  点击“文件/打开”菜单时,“打开媒体文件”对话框出现。选中媒体文件之后,点击“打开”按钮即可打开媒体文件;点击“取消”按钮中止文件打开操作。如图三所示。
   
  图三:“打开媒体文件”对话框
  
  除了上面提到的部件之外,媒体播放器还包含一个视觉部件、一个控制面板部件。视觉部件顺序播放媒体文件包含的各帧图像;控制面板部件允许用户暂停、开始媒体文件的回放,或进行其他控制操作,例如查看媒体文件信息。
  
  
  2.2 伪代码设计
  
  
  前面我们了解了构成媒体播放器GUI的各个部件,下面要开始“设想”一下这个程序的具体构造。在正式编写代码之前,我们先用伪代码的形式写出这个程序的运行过程,以后正式编写代码时只需把伪代码翻译成Java代码即可。下面给出了媒体播放器的伪代码描述:
  
  
  
  应用的类名称:MediaPlayer
  
  超类:Frame
  
  监听器分类:动作事件,控制器事件,菜单项事件,绘图事件,窗口事件
  
  
  main:
  
  * 为MediaPlayer对象分配内存。调用MediaPlayer构造函数,
  
  创建主窗口(同时,隐含地创建/启动了AWT后台线程)
  
  * 结束主程序线程。此时AWT线程继续运行。
  
  
  MediaPlayer构造函数:
  
  * 设置主窗口的标题
  
  * 注册窗口监听器,以处理窗口关闭事件
  
  * 创建“文件”菜单
  
  
  * 创建“打开”菜单项
  
  * 把MediaPlayer对象注册成为“打开”菜单项动作事件的监听器
  
  * 把“打开”菜单项加入“文件”菜单。
  
  
  * 在“文件”菜单中加入一条水平分隔线
  
  
  * 创建带检查框的“循环”菜单项
  
  * 把MediaPlayer对象注册成为“循环”菜单项事件的监听器
  
  * 把“循环”菜单项加入“文件菜单”
  
  
  * 在“文件”菜单中加入一条水平分隔线
  
  
  * 按照创建“打开”菜单项的过程,创建“退出”菜单项
  
  
  * 创建一个菜单条(MenuBar)
  
  * 把“文件”菜单加入到菜单条
  
  * 把新创建的菜单条设置为主窗口的菜单条
  
  * 把主窗口的大小设置为200*200像素
  
  * 显示主窗口
  
  * 结束构造函数
  
  
  动作监听器:
  
  
  当出现动作时:
  
  * 如果动作事件起源于“退出”菜单项,
  
  * 触发一个给窗口监听器的窗口关闭事件
  
  * 返回
  
  * 创建一个“打开媒体文件”对话框
  
  * 把对话框的当前目录设置为上次关闭时的目录
  
  * 显示对话框。这个对话框是一个模式对话框
  
  * 如果用户没有通过对话框选择媒体文件
  
  * 返回
  
  * 保存用户在对话框中选择的目录
  
  * 如果以前已经创建JMF播放器对象
  
  * 关闭该对象
  
  * 根据指定的目录和名字,创建一个使用file:协议的媒体定位器(MediaLocator)
  
  对象,再利用该对象创建一个JMF播放器对象
  
  * 如果出现异常
  
  * 显示错误信息,然后返回
  
  * 把主窗口的标题设置为媒体文件的名字
  
  * 把MediaPlayer对象注册为来自JMF播放器对象的控制器事件
  
  的监听器
  
  * 让JMF播放器对象预先提取媒体内容
  
  * 返回
  
  
  控制器监听器:
  
  
  当控制器被关闭:
  
  * 如果JMF播放器的视觉部件存在,从MediaPlayer容器拆除
  
  视觉部件
  
  * 如果JMF播放器的控制面板部件存在,从MediaPlayer容器拆除
  
  控制面板部件
  
  * 返回
  
  
  当媒体回放结束:
  
  * 如果“循环”菜单被选中
  
  * 复位JMF播放器对象的开始时间
  
  * 让JMF播放器对象开始播放媒体
  
  * 返回
  
  
  当预提取媒体内容结束:
  
  * JMF播放器对象开始播放媒体
  
  * 返回
  
  
  当

[1] [2] 下一页


  • 上一个Java:
  • 下一个Java:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:WebSyue@163.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    惊天动地私服 天龙八部私服 天龙八部私服 热血江湖私服 天龙八部私服 bet365 魔域私服 劲舞私服 传奇世界私服 bet365 传世私服 传奇世界私服