⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 playframe.java

📁 简单的播放器
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        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();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -