當前位置:編程學習大全網 - 編程語言 - 求JAVA視頻播放器代碼

求JAVA視頻播放器代碼

導入Java . awt . borderlayout;

導入Java . awt . component;

導入Java . awt . file dialog;

導入Java . awt . event . action event;

導入Java . awt . event . action listener;

導入Java . awt . event . item event;

導入Java . awt . event . item listener;

導入Java . awt . event . window adapter;

導入Java . awt . event . window event;

導入javax . media . controllerclosedevent;

導入javax . media . controller event;

導入javax . media . controller listener;

導入javax . media . endofmediaevent;

導入javax . media . manager;

導入javax . media . media locator;

import javax . media . noplayerexception;

導入javax . media . player;

導入javax . media . prefetchcompleteevent;

import javax . media . realizecompleteevent;

導入javax . media . time;

導入javax . swing . jcheckboxmenuitem;

導入javax . swing . jframe;

導入javax . swing . jmenu;

導入javax . swing . jmenubar;

導入javax . swing . jmenuitem;

導入javax . swing . swing utilities;

導入javax . swing . ui manager;

公共類JMFMediaPlayer擴展JFrame實現ActionListener,

ControllerListener,ItemListener {

// JMF玩家

玩家玩家;

//播放器的視頻組件和控制組件

組件視頻組件;

組件控件Component

//指示是否是第壹次打開播放器。

布爾優先=真;

//指示是否需要循環。

布爾循環=假;

//文件當前目錄

字符串currentDirectory

//構造方法

公共JMFMediaPlayer(字符串標題){

超級(標題);

addWindowListener(new window adapter(){

public void window closing(window event e){

//用戶點擊窗口系統菜單的關閉按鈕。

//調用dispose執行windowClosed。

dispose();

}

公共void window closed(window event e){

如果(玩家!= null){

//關閉JMF播放器對象

player . close();

}

system . exit(0);

}

});

//創建播放器的菜單。

JMenu file menu = new JMenu(" file ");

j menuitem openmemuitem = new j menuitem(" open ");

openmemuitem . addactionlistener(this);

file menu . add(openMemuItem);

//添加拆分條

file menu . add separator();

//創建復選框菜單項

jcheckbox menuitem loop menuitem = new jcheckbox menuitem(" loop ",false);

loop menuitem . additem listener(this);

file menu . add(loop menuitem);

file menu . add separator();

j menuitem exitmuitem = new j menuitem(" exit ");

exitmuitem . addactionlistener(this);

file menu . add(exitmuitem);

JMenuBar menuBar = new JMenuBar();

menuBar.add(文件菜單);

this . setjmenubar(menuBar);

this.setSize(200,200);

嘗試{

//設置界面的外觀,也就是系統外觀。

ui manager . setlookandfeel(ui manager . getsystemlookandfeelclassname());

swing utilities . updatecomponentreeui(this);

} catch(異常e) {

e . printstacktrace();

}

this . set visible(true);

}

/**

*實現了ActionListener接口來處理組件的活動事件。

*/

public void action performed(action event e){

If (e.getActionCommand()。等於("退出")){

//調用dispose執行windowClosed。

dispose();

返回;

}

文件對話框File dialog =新建文件對話框(this,“打開媒體文件”,file dialog。負載);

file dialog . set directory(current directory);

file dialog . set visible(true);

//如果用戶放棄選擇文件,返回。

if(file dialog . getfile()= = null){

返回;

}

current directory = file dialog . get directory();

如果(玩家!= null){

//關閉現有的JMF播放器對象。

player . close();

}

嘗試{

//創建打開所選文件的播放器。

player = Manager.createPlayer(新媒體定位器(" file:"

+file dialog . getdirectory()+file dialog . getfile());

} catch (java.io.IOException e2) {

system . out . println(E2);

返回;

} catch (NoPlayerException e2) {

System.out.println("找不到玩家。");

返回;

}

if (player == null) {

System.out.println("無法創建播放器。");

返回;

}

first = false

this . settitle(file dialog . getfile());

//控制播放器的事件處理

player.addControllerListener(這個);

//預先讀取文件內容

player .預取();

}

/**

*實現ControllerListener接口處理播放器控制事件的方法。

*/

public void controller update(controller event e){

//調用player.close()時出現ControllerClosedEvent。

//如果有可視化組件,就應該去掉(為了壹致性,

//我們也對控制面板部分做了同樣的處理)

if(例如ControllerClosedEvent的實例){

if (vedioComponent!= null) {

this.getContentPane()。remove(vedio component);

this.vedioComponent = null

}

if (controlComponent!= null) {

this.getContentPane()。移除(control component);

this.controlComponent = null

}

返回;

}

//如果是媒體文件到達尾部的事件。

EndOfMediaEvent的實例){

if(循環){

//如果允許循環,則重新開始播放。

player.setMediaTime(新時間(0));

player . start();

}

返回;

}

//如果是播放器預讀事件,

if(e instance of PrefetchCompleteEvent){

//啟動播放器

player . start();

返回;

}

//如果是文件打開完成事件,顯示視頻組件和控制器組件。

if (e實例of RealizeCompleteEvent) {

vedio component = player . getvisual component();

if (vedioComponent!= null){

this.getContentPane()。add(視頻組件);

}

control component = player . getcontrolpanelcomponent();

if (controlComponent!= null){

this.getContentPane()。add(controlComponent,BorderLayout。南);

}

this . pack();

}

}

//處理“循環”復選框中菜單項的click事件。

public void itemStateChanged(item event e){

loop =!循環;

}

公共靜態void main(String[] args){

新的JMF Media Player(“JMF媒體播放器”);

}

}

試試看。我在這裏運行正常。

  • 上一篇:幼兒園中班遊戲教案
  • 下一篇:速求java編程:計算器能在科學型與標準型之間切換的源代碼
  • copyright 2024編程學習大全網