日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java写一个音乐播放器源码_求一个JAVA音乐播放器的源代码

發布時間:2025/3/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java写一个音乐播放器源码_求一个JAVA音乐播放器的源代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

展開全部

import javax.media.ControllerEvent;

import javax.media.ControllerListener;

import javax.media.EndOfMediaEvent;

import javax.media.PrefetchCompleteEvent;

import javax.media.RealizeCompleteEvent;

import javax.media.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class MediaPlayer extends JFrame implements ActionListener,

ItemListener, ControllerListener {

String title;

Player player;

boolean first = true, loop = false;

Component vc, cc;

String currentDirectory=null;

// 構造函數,其中包括了設置響應窗口事件的監聽器。

MediaPlayer(String title) {

super(title);

/* 關閉按鈕的實現。。 */

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

dispose();

}

public void windowClosed(WindowEvent e) {

if (player != null)

player.close();

System.exit(0);

}

});

// 調用62616964757a686964616fe59b9ee7ad9431333330363766程序菜單欄的方法成員完成菜單的布置

setupMenu();

setSize(400, 400);

setVisible(true);

}

// 本方法用以設置程序菜單欄

public void setupMenu() {

// 設置一個菜單

Menu f = new Menu("文件");

// 往設置的菜單添加菜單項

MenuItem mi = new MenuItem("打開");

f.add(mi);

mi.addActionListener(this);

f.addSeparator();

CheckboxMenuItem cbmi = new CheckboxMenuItem("循環", false);

cbmi.addActionListener(this);

f.add(cbmi);

f.addSeparator();

MenuItem ee = new MenuItem("退出");

ee.addActionListener(this);

f.add(ee);

f.addSeparator();

Menu l = new Menu("播放列表");

Menu c = new Menu("播放控制");

MenuItem move = new MenuItem("播放");

move.addActionListener(this);

c.add(move);

c.addSeparator();

MenuItem pause = new MenuItem("暫停");

pause.addActionListener(this);

c.add(pause);

c.addSeparator();

MenuItem stop = new MenuItem("停止");

stop.addActionListener(this);

c.add(stop);

c.addSeparator();

// 設置一個菜單欄

MenuBar mb = new MenuBar();

mb.add(f);

mb.add?;

mb.add(l);

// 將構造完成的菜單欄交給當前程序的窗口;

setMenuBar(mb);

}

// 動作時間響應成員;捕捉發送到本對象的各種事件;

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

String cufile, selectfile, currentDirectory;

if (e.getActionCommand().equals("退出")) {

// 調用dispose以便執行windowClosed

dispose();

return;

}

// 此事表明擁護選擇了“播放”命令;

// 如果當前有一個文件可以播放則執行播放命令;

if (e.getActionCommand().equals("播放")) {

if (player != null) {

player.start();

}

return;

}

// 如果當前正在播放某一文件,則執行暫停;

if (e.getActionCommand().equals("暫停")) {

if (player != null) {

player.stop();

}

return;

}

// 停止命令的響應;

if (e.getActionCommand().equals("停止")) {

if (player != null) {

player.stop();

player.setMediaTime(new Time(0));

}

return;

}

// 用戶選擇要播放的媒體文件

if (e.getActionCommand().equals("打開")) {

FileDialog fd = new FileDialog(this, "打開媒體文件", FileDialog.LOAD);

// fd.setDirectory(currentDirectory);

2008-2-6 02:46 回復

肆方茉莉

62位粉絲

6樓

fd.setVisible(true);

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

if (fd.getFile() == null) {

return;

}

// 保存了所選文件的名稱及其路徑名稱已被稍后使用

// 同時設置當前文件夾路徑

selectfile = fd.getFile();

currentDirectory = fd.getDirectory();

cufile = currentDirectory + selectfile;

// 將用戶選擇的文件作為一個菜單項加入播放列表,該菜單項名為該文件名;

// 被點擊后給出的命令串是該文件的全路徑名

MenuItem mi = new MenuItem(selectfile);

mi.setActionCommand(cufile);

MenuBar mb = getMenuBar();

Menu m = mb.getMenu(2);

mi.addActionListener(this);

m.add(mi);

} else {

// 程序邏輯運行到次表示用戶選擇了一個“播放列表”中的媒體文件

// 此時可以通過如下動作獲得該文件的全路徑名

cufile = e.getActionCommand();

selectfile = cufile;

}

// 如果存在一個播放器,則先將其關閉,稍后再重新創建

// 創建播放器時需要捕捉一些異常

if (player != null) {

player.close();

}

try {

player = Manager.createPlayer(new MediaLocator("file:" + cufile));

} catch (Exception e2) {

System.out.println(e2);

return;

}/*

* catch(NoPlayerException e2){ System.out.println("不能找到播放器");

* return ; }

*/

if (player == null) {

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

return;

}

first = false;

setTitle(selectfile);

// 設置處理播放控制器實際的對象;

/**/

player.addControllerListener(this);

player.prefetch();

}

// 菜單狀態改變事件的響應函數;

public void itemStateChanged(ItemEvent arg0) {

// TODO Auto-generated method stub

}

public static void main(String[] args) {

// TODO Auto-generated method stub

new MediaPlayer("播放器");

}

// 調用繪圖函數進行界面的繪制 // public void update() {

// }

// 繪圖函數成員 //public void paint(Graphics g) {

// }

public void controllerUpdate(ControllerEvent e) {

// TODO Auto-generated method stub

Container tainer = getContentPane();

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

// 如果存在視覺部件,則該部件應該拆除(為了一致起見,我們對控制面版部件也執行同樣的操作,下一次需要時再構造)

if (e instanceof ControllerClosedEvent) {

if (vc != null) {

remove(vc);

vc = null;

}

if (cc != null) {

remove(cc);

cc = null;

}

}

// 播放結束時,將播放指針置于文件之首,如果設定了循環播放,則再次啟動播放器;

if (e instanceof EndOfMediaEvent) {

player.setMediaTime(new Time(0));

if (loop) {

player.start();

}

return;

}

// PrefetchCompletEvent事件發生后調用start,正式啟動播放

if (e instanceof PrefetchCompleteEvent) {

player.start();

return;

}

// 本事件表示由于播放的資源已經確定;此時要將媒體的圖形conmopnent

// 如果有顯示出來,同時將播放器player的控制顯示到窗口里;

if (e instanceof RealizeCompleteEvent) {

// 如果媒體中有圖像,將對應圖像component載入窗體;

vc = player.getVisualComponent();

if (vc != null)

tainer.add(vc, BorderLayout.CENTER);

// 將對應控制器component載入窗體;

cc = player.getControlPanelComponent();

cc.setBackground(Color.blue);

if (cc != null)

tainer.add(cc, BorderLayout.SOUTH);

// 有一些特殊媒體在播放時提供另外的控制手段,將控制器一并加入窗口;

/*

* gc=player.getGainControl(); gcc=gc.getControlComponent();

* if(gcc!=null) tainer.add(gcc,BorderLayout.NORTH);

*/

// 根據媒體文件中是否有圖像,設定相應的窗口大小

if (vc != null) {

pack();

return;

} else {

setSize(300, 75);

setVisible(true);

return;

}

}

} }

已贊過

已踩過<

你對這個回答的評價是?

評論

收起

總結

以上是生活随笔為你收集整理的java写一个音乐播放器源码_求一个JAVA音乐播放器的源代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。