1:import java.awt.*;2:import java.awt.event.*;3:import java.net.*;4:import javax.swing.*;5:import java.io.*;6:7:import javax.media.*;8:public class MediaPlayer extends JFrame implements ActionListener,ControllerListener,Runnable,ItemListener9:{10: Player player=null;11: Thread thread;12: File file,dir;13: FileDialog fileDialog;14: URL url;15: boolean loop=false;16: String filename[]={};17: Menu playListMenu;18: MenuItem openItem,exitItem,playItem,pauseItem,stopItem,playListItem;19: CheckboxMenuItem circulateItem;20:21: // 构造函数,其中包括了设置响应窗口事件的监听器。22: MediaPlayer(String title) {23: super(title);24: thread=new Thread(this);25: // 关闭按钮的实现26: addWindowListener(new WindowAdapter() {27: public void windowClosing(WindowEvent e) {28: dispose();29: System.exit(0);30: }31: });32: // 调用程序菜单栏的方法成员完成菜单的布置33: setupMenu();34: setSize(300, 300);35: setBounds(300,300,300,80);36: setResizable(false);37: setVisible(true);38: validate();39: }40: /**41:* 本方法用以设置程序菜单栏42:*/43: public void setupMenu() {44: MenuBar menuBar = new MenuBar();45: setMenuBar(menuBar);46: //文件菜单47: Menu fileMenu = new Menu("文件");48: menuBar.add(fileMenu);49: //打开按钮50: openItem = new MenuItem("打开");51: fileMenu.add(openItem);52: openItem.addActionListener(this);53: fileMenu.addSeparator();54: //导入播放列表55: playListItem=new MenuItem("播放列表");56: playListItem.addActionListener(this);57: fileMenu.add(playListItem);58: fileMenu.addSeparator();59: //退出按钮60: exitItem = new MenuItem("退出");61: exitItem.addActionListener(this);62: fileMenu.add(exitItem);63: fileMenu.addSeparator();64: //播放控制菜单65: Menu playControlMenu = new Menu("播放控制");66: menuBar.add(playControlMenu);67: //播放按钮68: playItem = new MenuItem("播放");69: playItem.addActionListener(this);70: playControlMenu.add(playItem);71: playControlMenu.addSeparator();72: //暂停按钮73: pauseItem = new MenuItem("暂停");74: pauseItem.addActionListener(this);75: playControlMenu.add(pauseItem);76: playControlMenu.addSeparator();77: //停止按钮78: stopItem = new MenuItem("停止");79: stopItem.addActionListener(this);80: playControlMenu.add(stopItem);81: playControlMenu.addSeparator();82: //循环按钮83: circulateItem = new CheckboxMenuItem("循环", false);84: circulateItem.addActionListener(this);85: playControlMenu.add(circulateItem);86:87: //播放列表88: playListMenu = new Menu("播放列表");89: menuBar.add(playListMenu);90: }91:92: /**93:* 动作时间响应成员94:* 捕捉发送到本对象的各种事件95:*/96: public void actionPerformed(ActionEvent e) {97: // 调用dispose以便执行windowClosed98: if (e.getSource()== exitItem){99: dispose();100: player.stop();101: System.exit(0);102: return;103: }104: //此事表明拥护选择了“播放”命令; 如果当前有一个文件可以播放则执行播放命令;105: else if (e.getSource()==playItem) {106: if (player != null)107: player.start();108: return;109: }110: // 如果当前正在播放某一文件,则执行暂停;111: else if (e.getSource()==pauseItem) {112: if (player != null)113: player.stop();114: return;115: }116: // 停止命令的响应,把时间进度条恢复到开始,并再次重新开始播放117: else if (e.getSource()==stopItem) {118: System.out.println("stopItem");119: if (player != null) {120: player.stop();121: player.setMediaTime(new Time(0));122: }123: return;124: }125: // 用户选择要播放的媒体文件126: else if (e.getSource()==openItem) {127: System.out.println("打开按钮");128: fileDialog=new FileDialog(this,"打开音乐文件",FileDialog.LOAD);129: fileDialog.setVisible(true);130: file=new File(fileDialog.getDirectory(),fileDialog.getFile());131: if(file==null)132: return;133: if (player != null) {134: System.out.println("无法创建播放器");135: player.stop();136: player.deallocate();137: }138: if(!(thread.isAlive()))139: thread=new Thread(this);140: try141: {142: thread.start();143: } catch (Exception ex) {}144: removeAll();145: }146: else if(e.getSource()==playListItem){147: JFileChooser filechooser=new JFileChooser();148: filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);149: filechooser.showOpenDialog(this);150: if(filechooser.getSelectedFile()!=null){151: dir=filechooser.getSelectedFile();152: myFileFilter acceptedFile=new myFileFilter("mp3");153: filename=dir.list(acceptedFile);154: }155: for(int i=0;i
java音乐播放器教程_java 音乐播放器
最新推荐文章于 2024-07-07 14:03:55 发布