Java 實(shí)現(xiàn)聲音播放程序
package newpackage1;
import java.applet.AudioClip;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
// 聲音播放程序
public class AudioPlayDemo extends JFrame implements ActionListener, ItemListener {
boolean looping = false; //是否循環(huán)播放
String[] choics = { "chimes.wav", "start.wav" }; //聲音文件名數(shù)組
URL file1 = getClass().getResource(choics[0]); //聲音文件1
URL file2 = getClass().getResource(choics[1]); //聲音文件2
AudioClip sound1 = java.applet.Applet.newAudioClip(file1); //聲音剪輯對象1
AudioClip sound2 = java.applet.Applet.newAudioClip(file2); //聲音剪輯對象2
AudioClip chosenClip = sound1; //選擇的聲音剪輯對象
JComboBox jcbFiles = new JComboBox(choics); //文件選擇組合框
JButton playButton = new JButton("播放"); //播放按鈕
JButton loopButton = new JButton("循環(huán)播放"); //循環(huán)播放按鈕
JButton stopButton = new JButton("停止"); //停止播放按鈕
JLabel status = new JLabel("選擇播放文件"); //狀態(tài)欄標(biāo)簽
JPanel controlPanel = new JPanel(); //控制面板用于包容按鈕
Container container = getContentPane(); //獲得窗口內(nèi)容窗格
public AudioPlayDemo() { //構(gòu)造器
super("聲音播放程序"); //調(diào)用父類構(gòu)造器設(shè)置窗口標(biāo)題欄
jcbFiles.setSelectedIndex(0); //設(shè)置組合框選擇項
jcbFiles.addItemListener(this); //為播放按鈕添加項目監(jiān)聽器
//為播放按鈕、循環(huán)播放按鈕、停止播放按鈕添加動作監(jiān)聽器
playButton.addActionListener(this);
loopButton.addActionListener(this);
stopButton.addActionListener(this);
stopButton.setEnabled(false); //設(shè)置停止播放按鈕不可用
//把播放按鈕、循環(huán)播放按鈕、停止播放按鈕加入控制面板
controlPanel.add(playButton);
controlPanel.add(loopButton);
controlPanel.add(stopButton);
//把文件選擇組合框、控制面板、狀態(tài)欄標(biāo)簽加入到窗口內(nèi)容窗格
container.add(jcbFiles, BorderLayout.NORTH);
container.add(controlPanel, BorderLayout.CENTER);
container.add(status, BorderLayout.SOUTH);
setSize(300, 130); //設(shè)置窗口大小
setVisible(true); //設(shè)置窗口可視
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關(guān)閉窗口時退出程序
}
//文件選擇組合框事件處理
public void itemStateChanged(ItemEvent e) {
if (jcbFiles.getSelectedIndex() == 0) {
chosenClip = sound1;
} else {
chosenClip = sound2;
}
}
//按鈕事件處理
public void actionPerformed(ActionEvent event) {
if (chosenClip == null) {
status.setText("聲音未載入");
return; //如果AudioClip對象為空,則直接返回
}
Object source = event.getSource(); //獲取用戶洗滌激活的按鈕
//播放按鈕事件處理
if (source == playButton) {
stopButton.setEnabled(true); //設(shè)置停止播放按鈕可用
loopButton.setEnabled(true); //設(shè)置循環(huán)播放按鈕可用
chosenClip.play(); //播放選擇的聲音剪輯對象一次
status.setText("正在播放"); //設(shè)置狀態(tài)欄信息
}
//循環(huán)播放按鈕事件處理
if (source == loopButton) {
looping = true;
chosenClip.loop(); //循環(huán)播放選擇的聲音剪輯對象
loopButton.setEnabled(false); //設(shè)置循環(huán)播放按鈕不可用
stopButton.setEnabled(true); //設(shè)置停止播放按鈕可用
status.setText("正在循環(huán)播放"); //設(shè)置狀態(tài)欄信息
}
//停止播放按鈕事件處理
if (source == stopButton) {
if (looping) {
looping = false;
chosenClip.stop(); //停止循環(huán)播放選擇的聲音剪輯對象
loopButton.setEnabled(true); //設(shè)置循環(huán)播放按鈕可用
} else {
chosenClip.stop(); //停止播放選擇的聲音剪輯對象
}
stopButton.setEnabled(false); //設(shè)置循環(huán)播放按鈕可用
status.setText("停止播放"); //設(shè)置狀態(tài)欄信息
}
}
public static void main(String s[]) {
new AudioPlayDemo(); //創(chuàng)建AudioPlayDemo對象
}
}


以上就是Java 實(shí)現(xiàn)聲音播放程序的詳細(xì)內(nèi)容,更多關(guān)于Java 聲音播放的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java操作redis實(shí)現(xiàn)增刪查改功能的方法示例
這篇文章主要介紹了Java操作redis實(shí)現(xiàn)增刪查改功能的方法,涉及java操作redis數(shù)據(jù)庫的連接、設(shè)置、增刪改查、釋放資源等相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
SpringBoot實(shí)現(xiàn)無感刷新Token的項目實(shí)踐
token刷新是前端安全中必要的一部分,本文就來介紹一下SpringBoot實(shí)現(xiàn)無感刷新Token的項目實(shí)踐,具有一定的參考價值,感興趣的可以了解一下2024-03-03
使用apache 的FileUtils處理文件的復(fù)制等操作方式
這篇文章主要介紹了使用apache 的FileUtils處理文件的復(fù)制等操作方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
IntelliJ IDEA cmd和idea Terminal查看java版本不一致的解決
原來win10電腦上安裝的是jdk8的版本,因某些原因,現(xiàn)在想換成jdk7的版本,修改環(huán)境變量后,在cmd中執(zhí)行 [java -version]命令,顯示的是7的版本,遇到這樣的問題如何解決呢?下面小編給大家分享IntelliJ IDEA cmd和idea Terminal查看java版本不一致的解決方案,一起看看吧2023-09-09
Springboot通過aop實(shí)現(xiàn)事務(wù)控制過程解析
這篇文章主要介紹了Springboot通過aop實(shí)現(xiàn)事務(wù)控制過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03
Java使用Tess4J實(shí)現(xiàn)圖像識別方式
這篇文章主要介紹了Java使用Tess4J實(shí)現(xiàn)圖像識別方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
Mybatis-Plus實(shí)現(xiàn)只更新部分字段的數(shù)據(jù)
這篇文章主要介紹了Mybatis-Plus實(shí)現(xiàn)只更新部分字段的數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
WebSocket獲取httpSession空指針異常的解決辦法
這篇文章主要介紹了在使用WebSocket實(shí)現(xiàn)p2p或一對多聊天功能時,如何獲取HttpSession來獲取用戶信息,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-01-01

