一、概述
首先我們來看看構造這個媒體播放器要達到什麼樣的目標,確定了目標也就確定了代碼量和程序的復雜程度。本文的媒體播放器要達到如下目標:
媒體播放器是一個菜單驅動的簡單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)
* 把“文件”菜單加入到菜單條