一
首先我們來看看構造這個媒體播放器要達到什麼樣的目標
媒體播放器是一個菜單驅動的簡單AWT應用
媒體播放器包含一個
媒體播放器可以在多種平台上運行
媒體播放器的核心功能通過JMF(Java Media Framework)API實現
二
我們把這個媒體播放器的設計分成兩個部分
媒體播放器的用戶界面包含一個主窗口
圖一
圖二
點擊
圖三
除了上面提到的部件之外
前面我們了解了構成媒體播放器GUI的各個部件
應用的類名稱
超類
監聽器分類
main:
* 為MediaPlayer對象分配內存
創建主窗口(同時
* 結束主程序線程
MediaPlayer構造函數
* 設置主窗口的標題
* 注冊窗口監聽器
* 創建
* 創建
* 把MediaPlayer對象注冊成為
* 把
* 在
* 創建帶檢查框的
* 把MediaPlayer對象注冊成為
* 把
* 在
* 按照創建
* 創建一個菜單條(MenuBar)
* 把
* 把新創建的菜單條設置為主窗口的菜單條
* 把主窗口的大小設置為
* 顯示主窗口
* 結束構造函數
動作監聽器
當出現動作時
* 如果動作事件起源於
* 觸發一個給窗口監聽器的窗口關閉事件
* 返回
* 創建一個
* 把對話框的當前目錄設置為上次關閉時的目錄
* 顯示對話框
* 如果用戶沒有通過對話框選擇媒體文件
* 返回
* 保存用戶在對話框中選擇的目錄
* 如果以前已經創建JMF播放器對象
* 關閉該對象
* 根據指定的目錄和名字
對象
* 如果出現異常
* 顯示錯誤信息
* 把主窗口的標題設置為媒體文件的名字
* 把MediaPlayer對象注冊為來自JMF播放器對象的控制器事件
的監聽器
* 讓JMF播放器對象預先提取媒體內容
* 返回
控制器監聽器
當控制器被關閉
* 如果JMF播放器的視覺部件存在
視覺部件
* 如果JMF播放器的控制面板部件存在
控制面板部件
* 返回
當媒體回放結束
* 如果
* 復位JMF播放器對象的開始時間
* 讓JMF播放器對象開始播放媒體
* 返回
當預提取媒體內容結束
* JMF播放器對象開始播放媒體
* 返回
當實例化(realize)完成
* 獲取JMF播放器對象的視覺部件
* 如果視覺部件存在
中間
* 獲取JMF播放器對象的控制面板部件
* 如果控制面板部件存在
* 執行pack()操作
* 返回
菜單項監聽器
當菜單項狀態改變
* 切換
* 返回
繪畫事件監聽器
paint()方法
* 如果尚未裝入媒體文件
* 獲得主窗口的寬度和高度
* 用藍色填充窗口內的區域
* 創建一種字體(DialogInput/粗體)
窗口的字體
* 計算歡迎信息的以像素計的寬度
* 把繪圖顏色改成白色
* 在主窗口的中央顯示出歡迎信息
* 調用Frame超類的paint()方法
* 返回
update()方法
* 調用paint()方法
* 返回
窗口監聽器
windowClosing
* 調用dispose以執行windowClosed
* 返回
windowClosed
* 如果已經創建JMF播放器對象
* 關閉JMF播放器對象
* 結束程序
偽代碼的前面三行聲明了媒體播放器的類名稱
三
下面我們把前面的偽代碼轉換成Java代碼
import dia
import java
import java
class MediaPlayer extends Frame implements ActionListener
ControllerListener
{
Player player;
Component vc
boolean first = true
String currentDirectory;
MediaPlayer (String title)
{
super (title);
addWindowListener
(new WindowAdapter ()
{
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25658.html