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

📄 jmusic.java

📁 本程序不仅实现了记事本基本的功能
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package jnotepad;import java.awt.*;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.*;import javax.media.*;import java.io.*;import java.util.*;//为了导入Vector/** * * @author Administrator */class JMusic {    private JPanel panel = new JPanel();    public int int_mode = 0;    public int index = 0;    private Player player;//Play是个实现Controller的接口    public File file,  musiclistfile;//利用File类结合JFileChooser进行文件打开操作    public Vector VfileName,  VdirName;    private String filename;    JMusic(JPanel jp)//构造函数    {        panel = jp;        VfileName = new Vector();        VdirName = new Vector();        musiclistfile = new File("歌曲列表.txt");        this.initMusiclist();    }    public void openFile() {        JFileChooser filechooser = new JFileChooser();        filechooser.setCurrentDirectory(file);        filechooser.setFileFilter(new javax.swing.filechooser.FileFilter() {            public boolean accept(File f) {                return f.getName().toLowerCase().endsWith(".mp3") || f.isDirectory();            }            public String getDescription() {                return "音乐文件(*.mp3)";            }        });        filechooser.showOpenDialog(null);        if ((file = filechooser.getSelectedFile()) != null) {            createPlayer();        }    }    private void createPlayer() {        filename = file.getName();        String suffix = filename.substring(filename.lastIndexOf(".") + 1);        if (!suffix.equals("mp3")) {            String extendName = "此播放器好象不支持" + suffix + "格式";            JOptionPane.showMessageDialog(null, extendName, "出错了!!", JOptionPane.ERROR_MESSAGE);            return;        }        closePreviosPlayer();//关闭先前的媒体播放器              try {            player = Manager.createPlayer(file.toURL());//javax.media.Manager直接继承于java.lang.object,且它为final,不能被继承            player.addControllerListener(new ControllerHand());//!!!!!!!            player.start();            addList(file);        } catch (Exception e) {        }    }    private void closePreviosPlayer() {        if (player == null) {            return;        }        player.stop();        player.deallocate(); //停止播放并且重新装载DateSource    }    private class ControllerHand implements ControllerListener {        public void controllerUpdate(ControllerEvent e) {            if (e instanceof RealizeCompleteEvent) {                Component control = player.getControlPanelComponent();                if (control != null) {                    panel.removeAll();                    panel.add(control, BorderLayout.SOUTH);                }                panel.doLayout();                panel.getParent().validate();                return;            }            if (e instanceof EndOfMediaEvent) {                if (int_mode == 0) {                    if (VfileName.size() == 0) {                        return;                    }                    index = (int) (Math.random() * VfileName.size());                    index %= VfileName.size();                }                if (int_mode == 1) {                    if (VfileName.size() == 0) {                        return;                    }                    index = (index + 1) % VfileName.size();                }                if (int_mode == 2) {                    player.setMediaTime(new Time(0));                    player.start();                }                createPlayer2();            }        }    }    private void addList(File file) {        index = VfileName.size();        VfileName.addElement(file.getName());        VdirName.addElement(file.getPath());    }    public void createPlayer2() {        try {            filename = VdirName.elementAt(index).toString();        } catch (ArrayIndexOutOfBoundsException e) {            return;        }        file = new File(filename);        closePreviosPlayer();//关闭先前的媒体播放器        try {            player = Manager.createPlayer(file.toURL());//javax.media.Manager直接继承于java.lang.object,且它为final,不能被继承            player.addControllerListener(new ControllerHand());            player.start();        } catch (Exception e) {        }    }    public void saveMusiclist() {        try {            BufferedWriter writer = new BufferedWriter(new FileWriter(musiclistfile));            int size = VdirName.size();            for (int i = 0; i < size; i++) {                writer.write((String) VdirName.get(i) + "\n");                writer.write((String) VfileName.get(i) + "\n");            }            writer.flush();            writer.close();        } catch (IOException ex) {            Logger.getLogger(JMusic.class.getName()).log(Level.SEVERE, null, ex);        }    }    private void initMusiclist() {        try {            if (!musiclistfile.exists()) {                musiclistfile.createNewFile();//防止不存在此文件发生读取错误,这两行代码保证不存在的情况下自动建立                return;            }            BufferedReader read = new BufferedReader(new FileReader(musiclistfile));            String dirstr = "";            String filestr = "";            do {                dirstr = read.readLine();                File filemp3 = new File(dirstr);                if (!filemp3.exists() || !dirstr.endsWith("mp3")) {                    break;                }                VdirName.addElement(dirstr);                filestr = read.readLine();                if (!dirstr.endsWith(filestr)) {                    VdirName.remove(VdirName.size() - 1);                    break;                }                VfileName.addElement(file);            } while (dirstr != null && filestr != null);            read.close();        } catch (Exception ex) {        }        if (VfileName.size() > 0) {            index = (int) (Math.random() * (VfileName.size() - 1));//产生随即数,进行随即播放            createPlayer2();        }    }}  

⌨️ 快捷键说明

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