• 音乐播放器


    package cn.hncu.games;

    import java.applet.Applet;
    import java.applet.AudioClip;
    import java.awt.Color;
    import java.awt.Font;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.awt.List;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;

    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;

    public class MusicPlayer extends JFrame{
    private JLabel songNameLabel=null;//显示播放状态及歌曲名
    private JButton btnLast = null;//上一首
    private JButton btnPlay = null;//播放/停止
    private JButton btnNext = null;//下一首
    private JButton btnLoop = null;//循环

    private List songList = null;
    //歌曲文件名数组---String
    String[] strSongNames={ "song1.wav","song2.wav","song3.wav","song4.wav","song5.wav","song6.wav" };
    final String DIR="songs\";
    //歌曲对象数组---AudioClip
    AudioClip songs[];
    AudioClip currentSong=null;
    int index=0;

    boolean isPlayOrStop = true;//播放状态(播放/停止),默认播放
    boolean isLoop= false;//是否循环播放

    public MusicPlayer() {
    super("音乐播放器");
    this.setBounds(300, 50, 310, 480);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setLayout(null);//空布局--绝对布局

    //标签:我的音乐播放器/歌曲名
    songNameLabel = new JLabel();
    songNameLabel.setText("我的音乐播放器");
    Font songNameFont = new Font("黑体",Font.ITALIC,18);
    songNameLabel.setFont(songNameFont);
    songNameLabel.setBounds(10, 10, 300, 40);//绝对布局时,由组件自己决定位置和大小
    this.getContentPane().add(songNameLabel);

    //四个播放功能键
    //构造
    btnLast = new JButton();
    btnPlay = new JButton();
    btnNext = new JButton();
    btnLoop = new JButton();
    //位置大小
    btnLast.setBounds(10, 70, 50, 40);
    btnPlay.setBounds(70, 70, 50, 40);
    btnNext.setBounds(130, 70, 50, 40);
    btnLoop.setBounds(190, 70, 50, 40);
    //图片
    btnLast.setIcon( new ImageIcon("images2\1.png") );
    btnPlay.setIcon( new ImageIcon("images2\2.png") );
    btnNext.setIcon( new ImageIcon("images2\3.png") );
    btnLoop.setIcon( new ImageIcon("images2\4.png") );
    //添加监听
    MouseListener ml = new MouseListenerC();
    btnLast.addMouseListener(ml);
    btnPlay.addMouseListener(ml);
    btnNext.addMouseListener(ml);
    btnLoop.addMouseListener(ml);

    //添加到界面
    getContentPane().add(btnLast);
    getContentPane().add(btnPlay);
    getContentPane().add(btnNext);
    getContentPane().add(btnLoop);

    //歌曲播放列表
    //列表上面的提示文字
    JLabel listLabel = new JLabel("播放列表");
    listLabel.setBounds(10, 120,100,30);
    Font listLabelFont = new Font("宋体",Font.BOLD,15);
    listLabel.setFont(listLabelFont);
    getContentPane().add(listLabel);
    //列表
    songList = new List();
    songList.setBounds(10, 150, 260, 260);
    songList.setBackground(Color.CYAN);
    //把歌曲名添加到List中
    songs = new AudioClip[ strSongNames.length ];
    for(int i=0;i<strSongNames.length;i++){
    songList.add( strSongNames[i]);
    songs[i] = loadSound(DIR+ strSongNames[i]);
    }
    getContentPane().add(songList);

    //程序刚启动时,播放第一首歌曲
    MusicRun mr = new MusicRun();
    Thread t = new Thread(mr);
    t.start();

    setVisible(true);
    }

    private AudioClip loadSound(String filename) {
    URL url = null;
    try {
    url = new URL("file:"+filename);
    } catch (MalformedURLException e) {
    e.printStackTrace();
    }
    return Applet.newAudioClip(url);
    }
    public static void main(String[] args) {
    MusicPlayer mp = new MusicPlayer();
    }

    private class MusicRun implements Runnable{
    @Override
    public void run() {
    currentSong = songs[index];
    if(isLoop){
    currentSong.loop();
    }
    if(isPlayOrStop){
    currentSong.play();
    }
    btnPlay.setIcon(new ImageIcon("images2\5.png"));
    }
    }

    private class MouseListenerC implements MouseListener{
    @Override
    public void mouseClicked(MouseEvent e) {
    currentSong.stop();

    if(e.getSource()==btnPlay){
    isPlayOrStop = !isPlayOrStop;
    }else if(e.getSource()==btnNext){
    index++;
    index = index % strSongNames.length;
    isPlayOrStop = true;
    } else if(e.getSource()==btnLast){
    index--;
    if(index<0){
    index = index+strSongNames.length;
    }
    isPlayOrStop = true;
    } else if(e.getSource()==btnLoop){
    isLoop= !isLoop;
    }

    if(isPlayOrStop){
    MusicRun mr = new MusicRun();
    Thread t = new Thread(mr);
    t.start();
    }else{
    btnPlay.setIcon(new ImageIcon("images2\2.png"));
    }
    }
    @Override
    public void mousePressed(MouseEvent e) {
    }
    @Override
    public void mouseReleased(MouseEvent e) {
    }
    @Override
    public void mouseEntered(MouseEvent e) {
    }
    @Override
    public void mouseExited(MouseEvent e) {
    }
    }
    }

  • 相关阅读:
    基于VLC的视频播放器
    IOS开发之新浪微博OAuth2
    Android之官方导航栏ActionBar
    IOS中键盘隐藏几种方式
    在Android中使用Android Ksoap2调用WebService
    Android之属性动画(二)
    IOS 内存管理
    利用scp 远程上传下载文件/文件夹和ssh远程执行命令
    Centos 检查磁盘读写性能
    JPA, JNDI, OSGi
  • 原文地址:https://www.cnblogs.com/1314wamm/p/5600044.html
Copyright © 2020-2023  润新知