一個簡單的Java音樂播放器
更新時間:2017年06月05日 11:49:12 作者:PettyKoKo
這篇文章主要為大家分享一個簡單的Java音樂播放器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Java音樂播放器展示的具體代碼,供大家參考,具體內(nèi)容如下
package KKMusic;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.CardLayout;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.SourceDataLine;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.event.ItemListener;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.awt.event.ItemEvent;
import javax.swing.JMenu;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.JSlider;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseEvent;
public class Mp3 extends JFrame {
private JPanel contentPane;
File file;//聲明文件對象
String filename;
JFileChooser chooser=new JFileChooser();//創(chuàng)建一個文件選擇器
private JTextField xiaoxi;
boolean loop=false;
AudioClip adc;//聲音音頻剪輯對象
SourceDataLine line;
private FloatControl volume = null;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Mp3 frame = new Mp3();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Mp3() {
setTitle("\u97F3\u4E50\u64AD\u653E\u5668");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 265, 333);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnNewMenu = new JMenu("\u6587\u4EF6");
menuBar.add(mnNewMenu);
xiaoxi = new JTextField();
xiaoxi.setColumns(10);
xiaoxi.setText("歡迎使用本播放器");
JMenuItem dakai = new JMenuItem("\u6253\u5F00");
dakai.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int value=chooser.showOpenDialog(chooser);//接受文件選擇器的狀態(tài)
if(value==chooser.APPROVE_OPTION){
file=chooser.getSelectedFile();//返回選中文件
filename=file.getName();
String flag=filename;
xiaoxi.setText(flag);
try {
if(adc!=null)
adc.stop();
URL url=new URL("file:"+file.getPath());//創(chuàng)建資源定位
adc=Applet.newAudioClip(url);
//adc.play();
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
System.out.println("不能播放!");
}
}
}
});
mnNewMenu.add(dakai);
JMenuItem tuichu = new JMenuItem("\u9000\u51FA");
tuichu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
if(adc!=null)
adc.stop();
return ;
}
});
mnNewMenu.add(tuichu);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
JButton playbtn = new JButton("\u64AD\u653E");
playbtn.setHorizontalAlignment(SwingConstants.LEFT);
playbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String flag="正在播放:"+filename;
if(adc==null){
flag="請選擇播放的音樂";
xiaoxi.setText(flag);
return;
}
adc.play();
xiaoxi.setText(flag);
}
});
JButton stopbtn = new JButton("\u6682\u505C");
stopbtn.setHorizontalAlignment(SwingConstants.LEFT);
stopbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
adc.stop();
String flag="停止播放音樂:"+filename;
xiaoxi.setText(flag);
}
});
JButton againbtn = new JButton("\u5FAA\u73AF");
againbtn.setHorizontalAlignment(SwingConstants.LEFT);
againbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
loop =!loop;
String flag="";
; if(loop){
adc.play();
adc.loop();//循環(huán)播放
flag="循環(huán)播放:"+filename;
}
else{
adc.play();
flag="順序播放"+filename;
}
xiaoxi.setText(flag);
}
});
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addContainerGap()
.addGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING, false)
.addComponent(xiaoxi, Alignment.LEADING)
.addGroup(Alignment.LEADING, gl_contentPane.createSequentialGroup()
.addComponent(playbtn, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(stopbtn, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(againbtn, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE)))
.addContainerGap(15, Short.MAX_VALUE))
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.TRAILING)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(xiaoxi, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addPreferredGap(ComponentPlacement.RELATED, 173, Short.MAX_VALUE)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(playbtn)
.addComponent(stopbtn)
.addComponent(againbtn))
.addContainerGap())
);
contentPane.setLayout(gl_contentPane);
}
}
運行結(jié)果如下:



以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis -如何處理clob類型數(shù)據(jù)
這篇文章主要介紹了Mybatis 如何處理clob類型數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
如何利用Java實現(xiàn)MySQL的數(shù)據(jù)變化監(jiān)聽
在高并發(fā)和大數(shù)據(jù)環(huán)境下,實時獲取?MySQL?數(shù)據(jù)庫的增量變化對數(shù)據(jù)同步、數(shù)據(jù)分析、緩存更新等場景至關(guān)重要,下面我們就來看看如何通過Java實現(xiàn)MySQL的數(shù)據(jù)變化監(jiān)聽吧2025-02-02
SpringBoot讀取Resource目錄下文件的四種方式總結(jié)
在Spring?Boot項目中,經(jīng)常需要獲取resources目錄下的文件,這些文件可以包括配置文件、模板文件、靜態(tài)資源等,本文將介紹四種常用的方法來獲取resources目錄下的文件,需要的朋友可以參考下2023-08-08
Maven?Web項目使用Cargo插件實現(xiàn)自動化部署的詳細(xì)步驟
cargo ,它是一組幫助用戶實現(xiàn)自動化部署,操作Web容器的工具,并且?guī)缀踔С炙械腤eb容器,這篇文章主要介紹了Maven?Web項目使用Cargo實現(xiàn)自動化部署,需要的朋友可以參考下2023-02-02
Spring MVC文件上傳大小和類型限制以及超大文件上傳bug問題
這篇文章主要介紹了Spring MVC文件上傳大小和類型限制以及超大文件上傳bug問題,非常具有實用價值,需要的朋友可以參考下2017-10-10

