PlayFrame.java
上传用户:tbn001
上传日期:2013-11-16
资源大小:9k
文件大小:44k
- package audioplayer;
- import java.awt.Dimension;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import java.awt.Rectangle;
- import javax.swing.JButton;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.JList;
- import javax.swing.JLabel;
- import javax.swing.DefaultListModel;
- import javax.swing.JScrollPane;
- import java.awt.Component;
- import javax.swing.JOptionPane;
- import javax.swing.JToggleButton;
- import javax.swing.JMenuBar;
- import java.awt.Font;
- import javax.swing.JMenu;
- import javax.swing.JMenuItem;
- import java.awt.Color;
- import javax.swing.ImageIcon;
- import javax.swing.SwingConstants;
- import javax.media.ControllerListener;
- import javax.media.Player;
- import javax.media.Manager;
- import javax.media.MediaLocator;
- import javax.media.NoPlayerException;
- import javax.media.ControllerEvent;
- import javax.media.ControllerClosedEvent;
- import javax.media.EndOfMediaEvent;
- import javax.media.Time;
- import javax.media.PrefetchCompleteEvent;
- import javax.media.RealizeCompleteEvent;
- import java.awt.FileDialog;
- import javax.swing.JPopupMenu;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.awt.Event;
- import java.awt.BorderLayout;
- import java.io.BufferedWriter;
- import java.io.FileWriter;
- import java.io.FileReader;
- import java.io.BufferedReader;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- public class PlayFrame extends JFrame implements ControllerListener {
- //num:列表计数器和数组下标
- Integer num = -1;
- //gD:文件路径 gF:文件名
- String[] gD = new String[50];
- String[] gF = new String[50];
- //声明Player变量
- Player player;
- //声明文件读取变量
- FileDialog OpenFileDialog;
- //声明视频窗口变量(visualcom)、播放控制变量(controlcom)
- Component visualcom, controlcom;
- //声明循环控制变量,true为循环播放
- boolean loop = true;
- JPanel contentPane;
- //ConterjPanel:控制面板
- JPanel ConterjPanel = new JPanel();
- //ListjPanel:列表面板
- JPanel ListjPanel = new JPanel();
- ImageIcon[] jb = {new ImageIcon("img\max.gif"),
- new ImageIcon("img\min.gif"),
- new ImageIcon("img\repeat.gif"),
- new ImageIcon("img\shufflerepeat.gif")};
- //PlayjButton:播放按钮
- JButton PlayjButton = new JButton(new ImageIcon("img\play.gif"));
- //PausejButton:暂停按钮
- JButton PausejButton = new JButton(new ImageIcon("img\pause.gif"));
- //StopjButton:停止按钮
- JButton StopjButton = new JButton(new ImageIcon("img\stop.gif"));
- //OpenjButton:打开按钮
- JButton OpenjButton = new JButton(new ImageIcon("img\open.gif"));
- //model为非空模型,用于List的显示
- DefaultListModel model = new DefaultListModel();
- //List:文件列表
- JList List = new JList(model);
- JScrollPane jScrollPanel = new JScrollPane();
- //ListjToggleButton:打开/隐藏列表按钮
- JToggleButton ListjToggleButton = new JToggleButton(jb[1]);
- //NextjButton:下一个
- JButton NextjButton = new JButton(new ImageIcon("img\next.gif"));
- //PreviousjButton:上一个
- JButton PreviousjButton = new JButton(new ImageIcon("img\back.gif"));
- JMenuBar AboutjMenuBar = new JMenuBar();
- JMenu AboutjMenu = new JMenu();
- //HelpjMenuItem:帮助文档
- JMenuItem HelpjMenuItem = new JMenuItem();
- //AboutjMenuItem:版本信息及制作人
- JMenuItem AboutjMenuItem = new JMenuItem();
- //ExitjMenuItem:退出
- JMenuItem ExitjMenuItem = new JMenuItem();
- //NamejLabel:显示当前文件名
- JLabel NamejLabel = new JLabel();
- TestImage Conterimage = new TestImage();
- TestImage Listimage = new TestImage();
- TestImage FileSliderimage = new TestImage();
- //ConterjPopupMenu:右键菜单
- JPopupMenu ConterjPopupMenu = new JPopupMenu();
- JMenuItem PlayjMenuItem = new JMenuItem();
- JMenuItem AddjMenuItem = new JMenuItem();
- JMenuItem DeletejMenuItem = new JMenuItem();
- //repeatjToggleButton:循环/非循环按钮
- JToggleButton repeatjToggleButton = new JToggleButton(jb[3]);
- //FileSliderjPanel用于显示controlcom上的功能键
- JPanel FileSliderjPanel = new JPanel();
- BorderLayout borderLayout1 = new BorderLayout();
- JMenu StartjMenu = new JMenu();
- //LoadjMenuItem:读取已存在的列表(*.dat)
- JMenuItem LoadjMenuItem = new JMenuItem();
- //VideojPanel用于显示视频
- JPanel VideojPanel = new JPanel();
- BorderLayout borderLayout2 = new BorderLayout();
- //SavejMenuItem:保存当前列表(*.dat)
- JMenuItem SavejMenuItem = new JMenuItem();
- KeyEvent e;
- public PlayFrame() {
- try {
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- jbInit();
- } catch (Exception exception) {
- exception.printStackTrace();
- }
- }
- private void jbInit() throws Exception {
- contentPane = (JPanel) getContentPane();
- contentPane.setLayout(null);
- //注册List范围内的右键监听
- List.addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent event) {
- if (event.getModifiers() == Event.META_MASK) {
- ConterjPopupMenu.show(contentPane, event.getX() + 30,
- event.getY() + 120);
- }
- }
- });
- //注册Listimage范围内的右键监听。当 num > 5 时,List范围内的右键菜单会随jScrollPane的卷轴滚动的方向移动,所以我加了一个List周边的右键,以方便使用
- Listimage.addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent event) {
- if (event.getModifiers() == Event.META_MASK) {
- ConterjPopupMenu.show(contentPane, event.getX(),
- event.getY() + 87);
- }
- }
- });
- //注册List范围内的鼠标双击监听(播放所选择的歌曲)
- List.addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent event) {
- if (event.getClickCount() == 2 && event.getButton() == 1) {
- PlayjButton.doClick();
- }
- }
- });
- //添加List范围内的删除按钮的快捷键(Delete)
- List.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == e.VK_DELETE) {
- DeletejMenuItem.doClick();
- List.setSelectedIndex(List.getSelectedIndex());
- }
- }
- });
- //添加List范围内的添加歌曲按钮的快捷键(insert)
- List.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == e.VK_INSERT) {
- AddjMenuItem.doClick();
- }
- }
- });
- //添加List范围内的帮助按钮的快捷键(F1)
- List.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == e.VK_F1) {
- HelpjMenuItem.doClick();
- }
- }
- });
- /*//添加List范围内的下一个按钮的快捷键(->)
- List.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == e.VK_RIGHT) {
- NextjButton.doClick();
- }
- }
- });
- //添加List范围内的上一个按钮的快捷键(<-)
- List.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == e.VK_LEFT) {
- PreviousjButton.doClick();
- }
- }
- });
- //添加List范围内的播放按钮的快捷键(Enter)
- List.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == e.VK_ENTER) {
- PlayjButton.doClick();
- }
- }
- });
- //添加List范围内的停止按钮的快捷键(S)
- List.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == e.VK_S) {
- StopjButton.doClick();
- }
- }
- });
- //添加List范围内的播放列表按钮的快捷键(L)
- List.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == e.VK_L) {
- ListjToggleButton.doClick();
- }
- }
- });
- //添加List范围内的播放模式按钮的快捷键(R)
- List.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == e.VK_R) {
- repeatjToggleButton.doClick();
- }
- }
- });*/
- this.getContentPane().setBackground(new Color(212, 138, 200));
- this.setJMenuBar(AboutjMenuBar);
- this.setResizable(false);
- setSize(new Dimension(213, 345));
- setTitle("AudioPlayer 1.0");
- contentPane.setBackground(new Color(212, 208, 200));
- contentPane.setRequestFocusEnabled(true);
- ConterjPanel.setBounds(new Rectangle(0, 0, 213, 85));
- ConterjPanel.setLayout(null);
- ListjPanel.setBounds(new Rectangle(0, 87, 213, 213));
- ListjPanel.setLayout(null);
- PlayjButton.setBackground(new Color(212, 208, 200));
- PlayjButton.setBounds(new Rectangle(57, 16, 22, 17));
- PlayjButton.addActionListener(new PlayFrame_PlayjButton_actionAdapter(this));
- PausejButton.setBackground(new Color(212, 208, 200));
- PausejButton.setBounds(new Rectangle(78, 16, 24, 17));
- PausejButton.addActionListener(new PlayFrame_PausejButton_actionAdapter(this));
- StopjButton.setBackground(new Color(212, 208, 200));
- StopjButton.setBounds(new Rectangle(101, 16, 25, 17));
- StopjButton.addActionListener(new PlayFrame_StopjButton_actionAdapter(this));
- OpenjButton.setBackground(new Color(212, 208, 200));
- OpenjButton.setBounds(new Rectangle(147, 16, 24, 17));
- OpenjButton.addActionListener(new PlayFrame_OpenjButton_actionAdapter(this));
- jScrollPanel.setBounds(new Rectangle(30, 31, 149, 145));
- ListjToggleButton.setBackground(new Color(212, 208, 200));
- ListjToggleButton.setBounds(new Rectangle(172, 72, 28, 13));
- ListjToggleButton.addActionListener(new
- PlayFrame_ListjToggleButton_actionAdapter(this));
- NextjButton.setBackground(new Color(212, 208, 200));
- NextjButton.setBounds(new Rectangle(125, 16, 23, 17));
- NextjButton.addActionListener(new PlayFrame_NextjButton_actionAdapter(this));
- PreviousjButton.setBackground(new Color(212, 208, 200));
- PreviousjButton.setBounds(new Rectangle(34, 16, 23, 17));
- PreviousjButton.addActionListener(new
- PlayFrame_PreviousjButton_actionAdapter(this));
- AboutjMenuBar.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
- AboutjMenu.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
- AboutjMenu.setText("About");
- HelpjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
- HelpjMenuItem.setText("Help");
- HelpjMenuItem.addActionListener(new
- PlayFrame_HelpjMenuItem_actionAdapter(this));
- AboutjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
- AboutjMenuItem.setText("About Me");
- AboutjMenuItem.addActionListener(new
- PlayFrame_AboutjMenuItem_actionAdapter(this));
- ExitjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
- ExitjMenuItem.setText("Exit");
- ExitjMenuItem.addActionListener(new
- PlayFrame_ExitjMenuItem_actionAdapter(this));
- NamejLabel.setFont(new java.awt.Font("宋体", Font.BOLD, 14));
- NamejLabel.setForeground(new Color(125, 59, 72));
- NamejLabel.setHorizontalAlignment(SwingConstants.CENTER);
- NamejLabel.setBounds(new Rectangle(24, 0, 158, 14));
- Listimage.setBounds(new Rectangle(0, 0, 10, 10));
- PlayjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
- PlayjMenuItem.setText("Play");
- PlayjMenuItem.addActionListener(new
- PlayFrame_PlayjMenuItem_actionAdapter(this));
- AddjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
- AddjMenuItem.setText("Add");
- AddjMenuItem.addActionListener(new PlayFrame_AddjMenuItem_actionAdapter(this));
- DeletejMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
- DeletejMenuItem.setText("Delete");
- DeletejMenuItem.addActionListener(new
- PlayFrame_DeletejMenuItem_actionAdapter(this));
- repeatjToggleButton.setToolTipText("");
- repeatjToggleButton.setBounds(new Rectangle(33, 38, 26, 14));
- repeatjToggleButton.addActionListener(new
- PlayFrame_repeatjToggleButton_actionAdapter(this));
- FileSliderjPanel.setBounds(new Rectangle(33, 54, 144, 18));
- FileSliderjPanel.setLayout(borderLayout1);
- StartjMenu.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
- StartjMenu.setText("Start");
- LoadjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
- LoadjMenuItem.setText("Load");
- LoadjMenuItem.addActionListener(new
- PlayFrame_LoadjMenuItem_actionAdapter(this));
- VideojPanel.setBounds(new Rectangle(212, 0, 318, 294));
- VideojPanel.setLayout(borderLayout2);
- SavejMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
- SavejMenuItem.setText("Save");
- SavejMenuItem.addActionListener(new
- PlayFrame_SavejMenuItem_actionAdapter(this));
- contentPane.add(ListjPanel);
- contentPane.add(ConterjPanel);
- AboutjMenuBar.add(StartjMenu);
- AboutjMenuBar.add(AboutjMenu);
- AboutjMenu.add(HelpjMenuItem);
- AboutjMenu.add(AboutjMenuItem);
- ListjPanel.add(Listimage);
- Listimage.add(jScrollPanel);
- jScrollPanel.getViewport().add(List);
- Listimage.setLayout(null);
- Listimage.setBounds(new Rectangle(0, 0, 207, 207));
- Listimage.setImage("img\Listjpanel.gif");
- Listimage.setSize(207, 207);
- ListjPanel.add(Listimage);
- Conterimage.setLayout(null);
- Conterimage.setBounds(new Rectangle(0, 0, 213, 85));
- Conterimage.setImage("img\conterjpanel.gif");
- Conterimage.setSize(203, 85);
- ConterjPanel.add(Conterimage);
- ConterjPanel.add(VideojPanel);
- FileSliderimage.setLayout(null);
- FileSliderimage.setBounds(new Rectangle(0, 0));
- FileSliderimage.setImage("img\FileSlider.gif");
- FileSliderimage.setSize(180, 25);
- FileSliderjPanel.add(FileSliderimage);
- Conterimage.add(ListjToggleButton);
- Conterimage.add(repeatjToggleButton);
- Conterimage.add(NamejLabel);
- Conterimage.add(PreviousjButton);
- Conterimage.add(PlayjButton);
- Conterimage.add(PausejButton);
- Conterimage.add(OpenjButton);
- Conterimage.add(NextjButton);
- Conterimage.add(StopjButton);
- Conterimage.add(FileSliderjPanel);
- ConterjPopupMenu.add(PlayjMenuItem);
- ConterjPopupMenu.add(AddjMenuItem);
- ConterjPopupMenu.add(DeletejMenuItem);
- StartjMenu.add(SavejMenuItem);
- StartjMenu.add(LoadjMenuItem);
- StartjMenu.add(ExitjMenuItem);
- PlayjButton.setToolTipText("Play");
- StopjButton.setToolTipText("Stop");
- repeatjToggleButton.setToolTipText("Repeat");
- ListjToggleButton.setToolTipText("List");
- NextjButton.setToolTipText("Next");
- PreviousjButton.setToolTipText("Previous");
- PausejButton.setToolTipText("Pause");
- OpenjButton.setToolTipText("Open");
- repeatjToggleButton.setMnemonic(e.VK_R);
- StopjButton.setMnemonic(e.VK_S);
- PlayjButton.setMnemonic(e.VK_ENTER);
- ListjToggleButton.setMnemonic(e.VK_L);
- NextjButton.setMnemonic(e.VK_RIGHT);
- PreviousjButton.setMnemonic(e.VK_LEFT);
- PausejButton.setMnemonic(e.VK_P);
- //运行时读取已存在的列表,若列表为空,则不读取
- try {
- FileReader nr = new FileReader("num.dat");
- BufferedReader bnr = new BufferedReader(nr);
- FileReader fr = new FileReader("file.dat");
- BufferedReader br = new BufferedReader(fr);
- FileReader fn = new FileReader("name.dat");
- BufferedReader bn = new BufferedReader(fn);
- String num1 = bnr.readLine();
- bnr.close();
- if (num1 != null) {
- try {
- //num要记录数组下标
- num = Integer.parseInt(num1);
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, ex,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- }
- }
- for (int i = 0; i <= num; i++) {
- gF[i] = bn.readLine();
- gD[i] = br.readLine();
- }
- //将读取到的文件名加载到List当中
- if (num >= 0 && gD[num] != null && gF[num] != null) {
- for (int i = 0; i <= num; i++) {
- model.addElement(gF[i].toString());
- }
- br.close();
- bn.close();
- //指向List中第一个索引处,此处设计是为了防止部分具有播放功能的按钮不会出现异常
- List.setSelectedIndex(0);
- }
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, ex,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- }
- this.SavejMenuItem.setEnabled(false);
- this.LoadjMenuItem.setEnabled(false);
- }
- //点击播放器上部About下拉菜单,点击AboutjMenuItem显示版本信息和制作人
- public void AboutjMenuItem_actionPerformed(ActionEvent e) {
- JOptionPane.showMessageDialog(this, "版本:1.0nWilliam组 制作 [2006年12月]",
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- }
- //点击ListjToggleButton打开/隐藏列表
- public void ListjToggleButton_actionPerformed(ActionEvent e) {
- if (ListjToggleButton.isSelected()) {
- //只显示控制面板的内容
- this.setSize(213, 132);
- this.setVisible(true);
- //设置按钮的图片
- ListjToggleButton.setIcon(jb[0]);
- } else {
- //当有视频窗口时要显示视频窗口,否则隐藏视频窗口
- if (visualcom != null) {
- this.setSize(539, 345);
- } else {
- this.setSize(213, 345);
- }
- this.setVisible(true);
- //设置按钮的图片
- ListjToggleButton.setIcon(jb[1]);
- }
- }
- //点击OpenjButton打开文件选择对话框,选择后,并播放所选文件
- public void OpenjButton_actionPerformed(ActionEvent e) {
- try {
- ++num;
- //先创建一个对话框对象,标题设置为“打开媒体文件”
- OpenFileDialog = new FileDialog(this, "打开媒体文件", FileDialog.LOAD);
- //设置该对话框的当前目录为上一次打开的目录
- OpenFileDialog.setDirectory(gD[num]);
- OpenFileDialog.setVisible(true);
- if (OpenFileDialog.getFile() == null) {
- --num;
- } else {
- //将已选择文件的路径存入数组
- gD[num] = OpenFileDialog.getDirectory();
- //将已选择文件的文件名存入数组
- gF[num] = OpenFileDialog.getFile();
- //如果JMF播放器对象存在,就关闭该播放器对象
- if (player != null)
- player.close();
- try {
- //根据指定的目录和文件名创建一个媒体定位器(MediaLocator)对象,再利用该媒体定位器对象创建一个JMF播放器对象
- player = Manager.createPlayer(new MediaLocator("file:" +
- gD[num] +
- gF[num]));
- } catch (java.io.IOException ex) {
- JOptionPane.showMessageDialog(this, ex,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- } catch (NoPlayerException e2) {
- JOptionPane.showMessageDialog(this, "不能找到播放器.",
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- }
- if (player == null) {
- JOptionPane.showMessageDialog(this, "无法创建播放器.",
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- }
- //将PlayerFrame对象注册为来自JMF播放器对象的控制器事件的动作监听器
- player.addControllerListener(this);
- //让JMF播放器对象预先提取媒体文件的内容
- player.prefetch();
- //将已选中的文件加载到List当中
- model.addElement(gF[num].toString());
- //在播放器上方显示当前播放的文件名
- NamejLabel.setText(gF[num].toString());
- //List中显示当前播放的文件
- List.setSelectedIndex(num);
- this.SavejMenuItem.setEnabled(true);
- this.LoadjMenuItem.setEnabled(true);
- }
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, ex,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- }
- }
- //点击PlayjButton播放List中当前所选的文件
- public void PlayjButton_actionPerformed(ActionEvent e) {
- //判断播放列表是否为空,如果不为空则播放List中当前所选择的文件,否则弹出消息框
- if (model.isEmpty() == true) {
- JOptionPane.showMessageDialog(this, "NO Music File",
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- } else {
- //如果JMF播放器对象存在,就关闭该播放器对象
- if (player != null)
- player.close();
- try {
- //根据指定的目录和文件名创建一个媒体定位器(MediaLocator)对象,再利用该媒体定位器对象创建一个JMF播放器对象
- player = Manager.createPlayer(new MediaLocator("file:" +
- gD[List.getSelectedIndex()] + gF[List.getSelectedIndex()]));
- } catch (java.io.IOException ex) {
- JOptionPane.showMessageDialog(this, ex,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- } catch (NoPlayerException ex) {
- JOptionPane.showMessageDialog(this, "不能找到播放器.",
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- }
- if (player == null) {
- JOptionPane.showMessageDialog(this, "无法创建播放器.",
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- }
- //将PlayerFrame对象注册为来自JMF播放器对象的控制器事件的动作监听器
- player.addControllerListener(this);
- //最后,让JMF播放器对象预先提取媒体文件的内容
- player.prefetch();
- //在播放器上方显示当前播放的文件名
- NamejLabel.setText(List.getSelectedValue().toString());
- }
- }
- //点击PausejButton暂停List中当前所选的文件
- public void PausejButton_actionPerformed(ActionEvent e) {
- try {
- player.stop();
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, ex, "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- }
- }
- //点击StopjButton停止List中当前所选的文件
- public void StopjButton_actionPerformed(ActionEvent e) {
- try {
- if (player != null) {
- player.stop();
- player.setMediaTime(new Time(0));
- }
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, ex,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- }
- }
- //点击NextjButton指向List中当前所选的文件的下一个文件
- public void NextjButton_actionPerformed(ActionEvent e) {
- try {
- //如果当前文件为最后一个则指向第一个文件,否则指向下一个文件
- if (List.getSelectedIndex() == num) {
- List.setSelectedIndex(0);
- NamejLabel.setText(List.getSelectedValue().toString());
- } else {
- List.setSelectedIndex(List.getSelectedIndex() + 1);
- NamejLabel.setText(List.getSelectedValue().toString());
- }
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, "NO File", "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- } finally {
- //播放List中当前指向的文件
- if (model.isEmpty() != true) {
- if (gF[List.getSelectedIndex()] == null)
- return;
- if (player != null)
- player.close();
- try {
- player = Manager.createPlayer(new MediaLocator("file:" +
- gD[List.getSelectedIndex()] +
- gF[List.getSelectedIndex()]));
- } catch (java.io.IOException e2) {
- JOptionPane.showMessageDialog(this, e2,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- } catch (NoPlayerException e2) {
- JOptionPane.showMessageDialog(this, "不能找到播放器.",
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- }
- if (player == null) {
- JOptionPane.showMessageDialog(this, "无法创建播放器.",
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- }
- player.addControllerListener(this);
- player.prefetch();
- }
- }
- }
- //点击PreviousjButton指向List中当前所选的文件的上一个文件
- public void PreviousjButton_actionPerformed(ActionEvent e) {
- try {
- //如果当前文件为第一个则指向最后一个文件,否则指向上一个文件
- if (List.getSelectedIndex() == 0) {
- List.setSelectedIndex(num);
- NamejLabel.setText(List.getSelectedValue().toString());
- } else {
- List.setSelectedIndex(List.getSelectedIndex() - 1);
- NamejLabel.setText(List.getSelectedValue().toString());
- }
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, "NO File", "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- } finally {
- //播放List中当前指向的文件
- if (model.isEmpty() != true) {
- if (gF[List.getSelectedIndex()] == null)
- return;
- if (player != null)
- player.close();
- try {
- player = Manager.createPlayer(new MediaLocator("file:" +
- gD[List.getSelectedIndex()] +
- gF[List.getSelectedIndex()]));
- } catch (java.io.IOException ex) {
- JOptionPane.showMessageDialog(this, ex,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- } catch (NoPlayerException ex) {
- JOptionPane.showMessageDialog(this, "不能找到播放器.",
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- }
- if (player == null) {
- JOptionPane.showMessageDialog(this, "无法创建播放器.",
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- return;
- }
- player.addControllerListener(this);
- player.prefetch();
- }
- }
- }
- //退出播放器
- public void ExitjMenuItem_actionPerformed(ActionEvent e) {
- if (player != null) {
- player.close();
- player.stop();
- }
- System.exit(0);
- }
- //Player 播放器对象的控制器事件的动作监听器
- public void controllerUpdate(ControllerEvent e) {
- //如果播放器被关闭时
- if (e instanceof ControllerClosedEvent) {
- //如果视频部件还存在,从VideojPanel面板中删除该视频部件
- if (visualcom != null) {
- VideojPanel.remove(visualcom);
- visualcom = null;
- }
- //如果控制面板部件还存在,从FileSliderjPanel面板中删除该控制面板部件
- if (controlcom != null) {
- FileSliderjPanel.remove(controlcom);
- controlcom = null;
- }
- return;
- }
- //当媒体播放结束时
- if (e instanceof EndOfMediaEvent) {
- //如果当前为“循环播放”状态
- if (loop) {
- if (List.getSelectedIndex() == num) {
- List.setSelectedIndex(0);
- NamejLabel.setText(List.getSelectedValue().toString());
- } else {
- List.setSelectedIndex(List.getSelectedIndex() + 1);
- NamejLabel.setText(List.getSelectedValue().toString());
- }
- player.close();
- //复位JMF播放器对象的开始时间
- player.setMediaTime(new Time(0));
- //让JMF播放器对象播放下一个文件
- try {
- player = Manager.createPlayer(new MediaLocator("file:" +
- gD[List.getSelectedIndex()] +
- gF[List.getSelectedIndex()]));
- player.addControllerListener(this);
- player.prefetch();
- } catch (Exception ex) {
- }
- }
- return;
- }
- //如果预取媒体文件内容结束时
- if (e instanceof PrefetchCompleteEvent) {
- //让JMF播放器对象开始播放该媒体
- player.start();
- return;
- }
- //当实例化(Realize)媒体文件完成时
- if (e instanceof RealizeCompleteEvent) {
- //获取JMF播放器对象的视频部件
- visualcom = player.getVisualComponent();
- //如果视频部件存在,将视频部件加入到VideojPanel面板的中央
- if (visualcom != null) {
- this.VideojPanel.add(visualcom, BorderLayout.CENTER);
- }
- //获取JMF播放器对象的控制面板部件
- controlcom = player.getControlPanelComponent();
- //如果控制面板部件存在,将控制面板部件加入到FileSliderjPanel面板的中央
- if (controlcom != null)
- this.FileSliderjPanel.add(controlcom, BorderLayout.SOUTH);
- //执行pack操作
- this.pack();
- //如果视频部件存在,将打开视频窗口,否则隐藏视频窗口
- if (visualcom != null) {
- this.setSize(539, 345);
- } else {
- this.setSize(213, 345);
- }
- this.setVisible(true);
- }
- }
- //点击repeatjToggleButton来设置当前循环模式
- public void repeatjToggleButton_actionPerformed(ActionEvent e) {
- if (repeatjToggleButton.isSelected()) {
- repeatjToggleButton.setIcon(jb[2]);
- loop = false;
- } else {
- repeatjToggleButton.setIcon(jb[3]);
- loop = true;
- }
- }
- //右键点击DeletejMenuItem删除List中当前所选的文件,删除后,选择到最大索引处
- public void DeletejMenuItem_actionPerformed(ActionEvent e) {
- try {
- //如果List不为空则删除当前所选的文件
- if (List.getMaxSelectionIndex() != -1) {
- int m = List.getMaxSelectionIndex();
- gD[m] = null;
- gF[m] = null;
- for (int i = m; i <= num; i++) {
- gD[i] = gD[i + 1];
- gF[i] = gF[i + 1];
- }
- model.remove(List.getSelectedIndex());
- List.setSelectedIndex(List.getSelectedIndex() + num);
- --num;
- }
- } catch (Exception ex) {
- }
- this.SavejMenuItem.setEnabled(true);
- this.LoadjMenuItem.setEnabled(true);
- }
- //右键点击AddjMenuItem,将弹出文件添加对话框,选择文件后,将添加到List末尾
- public void AddjMenuItem_actionPerformed(ActionEvent e) {
- try {
- ++num;
- //创建一个对话框对象,标题设置为“添加媒体文件”
- OpenFileDialog = new FileDialog(this, "添加媒体文件", FileDialog.LOAD);
- OpenFileDialog.setDirectory(gD[num]);
- OpenFileDialog.setVisible(true);
- if (OpenFileDialog.getFile() == null) {
- --num;
- } else {
- gD[num] = OpenFileDialog.getDirectory();
- gF[num] = OpenFileDialog.getFile();
- //将所选的文件添加到List末尾
- model.addElement(gF[num].toString());
- }
- } catch (Exception ex) {
- }
- this.SavejMenuItem.setEnabled(true);
- this.LoadjMenuItem.setEnabled(true);
- }
- //右键点击PlayjMenuItem,将播放List中当前所选的文件
- public void PlayjMenuItem_actionPerformed(ActionEvent e) {
- //此处是直接调用PlayjButton事件的动作监听
- this.PlayjButton_actionPerformed(e);
- }
- //点击播放器上部About下拉菜单,点击Help,将弹出帮助文档
- public void HelpjMenuItem_actionPerformed(ActionEvent e) {
- Runtime rt = Runtime.getRuntime();
- try {
- rt.exec("hh.exe help.chm");
- } catch (Exception ex) {
- }
- }
- //点击播放器上部Start下拉菜单,点击SavejMenuItem,将保存当前List中的全部索引
- public void SavejMenuItem_actionPerformed(ActionEvent e) {
- this.LoadjMenuItem.setEnabled(true);
- try {
- //file.dat存储当前列表中的所有文件的路径
- FileWriter fw = new FileWriter("file.dat");
- BufferedWriter bw = new BufferedWriter(fw);
- //name.dat存储当前列表中的所有文件的文件名
- FileWriter fn = new FileWriter("name.dat");
- BufferedWriter bn = new BufferedWriter(fn);
- //将gD和gF分别保存到file.dat和name.dat文件中
- for (int i = 0; i <= num; i++) {
- bw.write(gD[i]);
- bw.newLine();
- bn.write(gF[i]);
- bn.newLine();
- }
- bw.flush();
- bn.flush();
- bn.close();
- fw.close();
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, ex,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- }
- try {
- //num.dat存储当前列表中的文件个数
- FileWriter nw = new FileWriter("num.dat");
- BufferedWriter bnw = new BufferedWriter(nw);
- //为了保证当List不为空时,保存num到num.dat文件,num.dat所保存的数据是String类型,将来要读取的时候一定要进行类型转换
- if (num >= 0 && gF[0] != null) {
- bnw.write(num.toString());
- }
- bnw.flush();
- nw.close();
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, ex,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- }
- this.SavejMenuItem.setEnabled(false);
- }
- //点击播放器上部Start下拉菜单,点击LoadjMenuItem,将读取上一次所保存的文件
- public void LoadjMenuItem_actionPerformed(ActionEvent e) {
- if (num != 0) {
- for (int i = num; i >= 0; i--) {
- model.remove(i);
- }
- }
- try {
- FileReader nr = new FileReader("num.dat");
- BufferedReader bnr = new BufferedReader(nr);
- FileReader fr = new FileReader("file.dat");
- BufferedReader br = new BufferedReader(fr);
- FileReader fn = new FileReader("name.dat");
- BufferedReader bn = new BufferedReader(fn);
- //读取上一次所保存的文件个数
- String num1 = bnr.readLine();
- bnr.close();
- //因为num1是String类型,这里要进行转换成Integer类型
- if (num1 != null) {
- try {
- num = Integer.parseInt(num1);
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, ex,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- }
- }
- //读取上一次所保存的所有文件的路径及文件名,并储存到数组中
- try {
- for (int i = 0; i <= num; i++) {
- gF[i] = bn.readLine();
- gD[i] = br.readLine();
- }
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, "无曲目,请添加曲目",
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- }
- //将所读取到的文件加载到List的末尾
- if (num >= 0 && gD[num] != null && gF[num] != null) {
- for (int i = 0; i <= num; i++) {
- model.addElement(gF[i].toString());
- }
- }
- br.close();
- bn.close();
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, ex,
- "AudioPlayer 1.0",
- JOptionPane.CLOSED_OPTION);
- }
- this.LoadjMenuItem.setEnabled(false);
- this.SavejMenuItem.setEnabled(true);
- }
- }
- class PlayFrame_SavejMenuItem_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_SavejMenuItem_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.SavejMenuItem_actionPerformed(e);
- }
- }
- class PlayFrame_LoadjMenuItem_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_LoadjMenuItem_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.LoadjMenuItem_actionPerformed(e);
- }
- }
- class PlayFrame_HelpjMenuItem_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_HelpjMenuItem_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.HelpjMenuItem_actionPerformed(e);
- }
- }
- class PlayFrame_DeletejMenuItem_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_DeletejMenuItem_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.DeletejMenuItem_actionPerformed(e);
- }
- }
- class PlayFrame_AddjMenuItem_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_AddjMenuItem_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.AddjMenuItem_actionPerformed(e);
- }
- }
- class PlayFrame_PlayjMenuItem_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_PlayjMenuItem_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.PlayjMenuItem_actionPerformed(e);
- }
- }
- class PlayFrame_repeatjToggleButton_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_repeatjToggleButton_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.repeatjToggleButton_actionPerformed(e);
- }
- }
- class PlayFrame_ExitjMenuItem_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_ExitjMenuItem_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.ExitjMenuItem_actionPerformed(e);
- }
- }
- class PlayFrame_PreviousjButton_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_PreviousjButton_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.PreviousjButton_actionPerformed(e);
- }
- }
- class PlayFrame_StopjButton_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_StopjButton_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.StopjButton_actionPerformed(e);
- }
- }
- class PlayFrame_PlayjButton_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_PlayjButton_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.PlayjButton_actionPerformed(e);
- }
- }
- class PlayFrame_PausejButton_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_PausejButton_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.PausejButton_actionPerformed(e);
- }
- }
- class PlayFrame_AboutjMenuItem_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_AboutjMenuItem_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.AboutjMenuItem_actionPerformed(e);
- }
- }
- class PlayFrame_NextjButton_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_NextjButton_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.NextjButton_actionPerformed(e);
- }
- }
- class PlayFrame_ListjToggleButton_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_ListjToggleButton_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.ListjToggleButton_actionPerformed(e);
- }
- }
- class PlayFrame_OpenjButton_actionAdapter implements ActionListener {
- private PlayFrame adaptee;
- PlayFrame_OpenjButton_actionAdapter(PlayFrame adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.OpenjButton_actionPerformed(e);
- }
- }