Flask接口签名sign原理与实例代码浅析
296
2023-04-01
java 实现音乐播放器的简单实例
java 实现音乐播放器的简单实例
实现效果图:
代码如下
package cn.hncu.games;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.net.URL;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class MusicPlayer extends JFrame{
//显示(歌曲名称)播放状态的标签
JLabel songNameLabel = null;
//四个播放功能键按钮
JButton btnLast = null; //上一曲
JButton btnPlay = null; //播放/停止
JButton btnNext = null; //下一曲
JButton btnLoop = null; //循环
//歌曲列表
JList songsList = null;
AudioClip songs[] = null;
AudioClip currentSong = null;
int index=0; //当前歌曲在JList中的位置(序号)
//歌曲文件名数组---String
String[] strSongNames={ "song1.wav","song2.wav","song3.wav","song4.wav","song5.wav","song6.wav" };
final String DIR="songs\\";
//播放音乐的线程
Thread playerThread=null;
boolean isPlayOrStop = true;//true代表播放状态
boolean isLoop = false; //是否为循环状态
public MusicPlayer() {
super("音乐播放器");
setBounds(300, 50, 310, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(null);
//hello();
//显示(歌曲名称)播放状态的标签
songNameLabel = new JLabel();
Font songNameFont = new Font("黑体",Font.ITALIC,18);
songNameLabel.setFont(songNameFont);
songNameLabel.setText("我的音乐播放器");
songNameLabel.setBounds(10, 10, 300, 40);
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"));
//添加到框架
getContentPane().add(btnLast);
getContentPane().add(btnPlay);
getContentPane().add(btnNext);
getContentPane().add(btnLoop);
//添加监听
MyMouseListener mml = new MyMouseListener();
btnLast.addMouseListener(mml);
btnPlay.addMouseListener(mml);
btnNext.addMouseListener(mml);
btnLoop.addMouseListener(mml);
//歌曲列表的标题
JLabel listLabel = new JLabel("播放列表");
listLabel.setBounds(10, 120, 100, 30);
Font listLabelFont = new Font("黑体",Font.BOLD,16);
listLabel.setFont(listLabelFont);
getContentPane().add(listLabel);
//歌曲列表
/*
songsList = new JList();
songsList.setBounds(10, 150, 250, 300);
songsList.setBackground(Color.CYAN);
//把所有歌曲名逐个添加到List中
//songsList.setListData(strSongNames);
for(int i=0;i DefaultListModel dm = (DefaultListModel)songsList.getModel(); dm.add(i,strSongNames[i]); } getContentPane().add(songsList); */ DefaultListModel lm = new DefaultListModel(); songsList = new JList(lm); songsList.setBounds(10, 150, 250, 300); songsList.setBackground(Color.CYAN); //把所有歌曲名逐个添加到List中 //songsList.setListData(strSongNames); songs = new AudioClip[strSongNames.length]; for(int i=0;i lm.add(i,strSongNames[i]); songs[i] = loadSound(strSongNames[i]); } getContentPane().add(songsList); //lm.remove(3); //对JList控件的监听技术实现 songsList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { currentSong.stop(); index = songsList.getSelectedIndex(); isPlayOrStop = true; playerThread = new Thread( new MusicRun() ); playerThread.start(); } }); //单开一个线程,专用于播放音乐 playerThread = new Thread( new MusicRun() ); playerThread.start(); setVisible(true); } private AudioClip loadSound(String fileName) { try { URL url = new URL("file:songs\\"+fileName); AudioClip au = Applet.newAudioClip(url); return au; } catch (Exception e) { e.printStackTrace(); } return null; } //讲解音乐播放的基本技术 private void hello() { try { File f = new File("songs\\song1.wav"); URL url = f.toURI().toURL(); //URL url = new URL("file:songs\\song1.wav"); AudioClip au = Applet.newAudioClip(url); au.play(); //au.loop(); //au.stop(); } catch (Exception e) { e.printStackTrace(); } } private class MyMouseListener extends MouseAdapter{ @Override public void mouseClicked(MouseEvent e) { JButton btn = (JButton) e.getSource(); currentSong.stop(); if(btn==btnPlay){ isPlayOrStop = !isPlayOrStop; }else if(btn==btnLast){ index--; if(index<0){ index = strSongNames.length-1; } //isPlayOrStop=true; }else if(btn==btnNext){ index++; index = index%strSongNames.length; }else if(btn==btnLoop){ isLoop = !isLoop; } if(isPlayOrStop){//播放 playerThread = new Thread( new MusicRun() ); playerThread.start(); }else{//停止 songsList.setSelectedIndex(index); songNameLabel.setText("停止播放:"+strSongNames[index]); btnPlay.setIcon( new ImageIcon("images2/2.png")); } } } private class MusicRun implements Runnable{ @Override public void run() { currentSong = songs[index]; if(isLoop){ currentSong.loop(); songNameLabel.setText("循环播放:"+strSongNames[index]); } if (isPlayOrStop) { currentSong.play(); } //在播放列表中选定当前歌曲 songsList.setSelectedIndex(index); //把播放按钮的图标切换成“停止” btnPlay.setIcon( new ImageIcon("images2/5.png")); if(!isLoop){ songNameLabel.setText("正在播放:"+strSongNames[index]); } } } public static void main(String[] args) { new MusicPlayer(); } } 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!
DefaultListModel dm = (DefaultListModel)songsList.getModel();
dm.add(i,strSongNames[i]);
}
getContentPane().add(songsList);
*/
DefaultListModel lm = new DefaultListModel();
songsList = new JList(lm);
songsList.setBounds(10, 150, 250, 300);
songsList.setBackground(Color.CYAN);
//把所有歌曲名逐个添加到List中
//songsList.setListData(strSongNames);
songs = new AudioClip[strSongNames.length];
for(int i=0;i lm.add(i,strSongNames[i]); songs[i] = loadSound(strSongNames[i]); } getContentPane().add(songsList); //lm.remove(3); //对JList控件的监听技术实现 songsList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { currentSong.stop(); index = songsList.getSelectedIndex(); isPlayOrStop = true; playerThread = new Thread( new MusicRun() ); playerThread.start(); } }); //单开一个线程,专用于播放音乐 playerThread = new Thread( new MusicRun() ); playerThread.start(); setVisible(true); } private AudioClip loadSound(String fileName) { try { URL url = new URL("file:songs\\"+fileName); AudioClip au = Applet.newAudioClip(url); return au; } catch (Exception e) { e.printStackTrace(); } return null; } //讲解音乐播放的基本技术 private void hello() { try { File f = new File("songs\\song1.wav"); URL url = f.toURI().toURL(); //URL url = new URL("file:songs\\song1.wav"); AudioClip au = Applet.newAudioClip(url); au.play(); //au.loop(); //au.stop(); } catch (Exception e) { e.printStackTrace(); } } private class MyMouseListener extends MouseAdapter{ @Override public void mouseClicked(MouseEvent e) { JButton btn = (JButton) e.getSource(); currentSong.stop(); if(btn==btnPlay){ isPlayOrStop = !isPlayOrStop; }else if(btn==btnLast){ index--; if(index<0){ index = strSongNames.length-1; } //isPlayOrStop=true; }else if(btn==btnNext){ index++; index = index%strSongNames.length; }else if(btn==btnLoop){ isLoop = !isLoop; } if(isPlayOrStop){//播放 playerThread = new Thread( new MusicRun() ); playerThread.start(); }else{//停止 songsList.setSelectedIndex(index); songNameLabel.setText("停止播放:"+strSongNames[index]); btnPlay.setIcon( new ImageIcon("images2/2.png")); } } } private class MusicRun implements Runnable{ @Override public void run() { currentSong = songs[index]; if(isLoop){ currentSong.loop(); songNameLabel.setText("循环播放:"+strSongNames[index]); } if (isPlayOrStop) { currentSong.play(); } //在播放列表中选定当前歌曲 songsList.setSelectedIndex(index); //把播放按钮的图标切换成“停止” btnPlay.setIcon( new ImageIcon("images2/5.png")); if(!isLoop){ songNameLabel.setText("正在播放:"+strSongNames[index]); } } } public static void main(String[] args) { new MusicPlayer(); } } 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!
lm.add(i,strSongNames[i]);
songs[i] = loadSound(strSongNames[i]);
}
getContentPane().add(songsList);
//lm.remove(3);
//对JList控件的监听技术实现
songsList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
currentSong.stop();
index = songsList.getSelectedIndex();
isPlayOrStop = true;
playerThread = new Thread( new MusicRun() );
playerThread.start();
}
});
//单开一个线程,专用于播放音乐
playerThread = new Thread( new MusicRun() );
playerThread.start();
setVisible(true);
}
private AudioClip loadSound(String fileName) {
try {
URL url = new URL("file:songs\\"+fileName);
AudioClip au = Applet.newAudioClip(url);
return au;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//讲解音乐播放的基本技术
private void hello() {
try {
File f = new File("songs\\song1.wav");
URL url = f.toURI().toURL();
//URL url = new URL("file:songs\\song1.wav");
AudioClip au = Applet.newAudioClip(url);
au.play();
//au.loop();
//au.stop();
} catch (Exception e) {
e.printStackTrace();
}
}
private class MyMouseListener extends MouseAdapter{
@Override
public void mouseClicked(MouseEvent e) {
JButton btn = (JButton) e.getSource();
currentSong.stop();
if(btn==btnPlay){
isPlayOrStop = !isPlayOrStop;
}else if(btn==btnLast){
index--;
if(index<0){
index = strSongNames.length-1;
}
//isPlayOrStop=true;
}else if(btn==btnNext){
index++;
index = index%strSongNames.length;
}else if(btn==btnLoop){
isLoop = !isLoop;
}
if(isPlayOrStop){//播放
playerThread = new Thread( new MusicRun() );
playerThread.start();
}else{//停止
songsList.setSelectedIndex(index);
songNameLabel.setText("停止播放:"+strSongNames[index]);
btnPlay.setIcon( new ImageIcon("images2/2.png"));
}
}
}
private class MusicRun implements Runnable{
@Override
public void run() {
currentSong = songs[index];
if(isLoop){
currentSong.loop();
songNameLabel.setText("循环播放:"+strSongNames[index]);
}
if (isPlayOrStop) {
currentSong.play();
}
//在播放列表中选定当前歌曲
songsList.setSelectedIndex(index);
//把播放按钮的图标切换成“停止”
btnPlay.setIcon( new ImageIcon("images2/5.png"));
if(!isLoop){
songNameLabel.setText("正在播放:"+strSongNames[index]);
}
}
}
public static void main(String[] args) {
new MusicPlayer();
}
}
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~