一、概述
首先我们来看看构造这个媒体播放器要达到什么样的目标,确定了目标也就确定了代码量和程序的复杂程度。本文的媒体播放器要达到如下目标:
媒体播放器是一个菜单驱动的简单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对象注册成为“打开”菜单项动作事件的监听器
* 把“打开”菜单项加入“文件”菜单。
* 在“文件”菜单中加入一条水平分隔线
41/41234>