【发布时间】:2016-12-17 07:19:19
【问题描述】:
当我单击该框时音乐可以正常工作,但是当我再次单击它时音乐不会停止。然后,如果我再次单击未选中的框,音乐将再次播放,一次播放 2 次!请帮我停止音乐!
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
InputStream inputStream = getClass().getResourceAsStream("panda - desiigner (donald trump remix).au");
AudioStream audioStream = null;
try {
audioStream = new AudioStream(inputStream);
} catch (IOException ex) {
Logger.getLogger(kekFrame.class.getName()).log(Level.SEVERE, null, ex);
}
int check;
if(jCheckBox1.isSelected() == true){
check = 1;
} else {
check = 0;
}
switch (check) {
case 1 : AudioPlayer.player.start(audioStream);
System.out.println("Music has started playing");
break;
case 0 : AudioPlayer.player.stop(audioStream);
System.out.println("Music has stopped playing");
break;
}
}
/**
* @param args the command line arguments
*/
// Variables declaration - do not modify
private javax.swing.JCheckBox jCheckBox1;
【问题讨论】:
-
请分享AudioPlayer的代码
-
在哪里,我该怎么做?
-
@DarkKnight
import sun.audio.AudioPlayer;是 (Oracle) JRE 内部的一个未记录的(&“无可用源”)类。 OP:不要使用这些类。请改用javax.sound.sampled包中的Clip。 -
Then if i click on the unchecked box again, the music plays again so 2 times at once!好吧,每次您单击复选框时,您都会创建一个new AudioStream(...)我怀疑您应该只创建一个。然后你使用 AudioStream 的方法来开始/停止音乐。阅读 API。 -
@MatějPospíšil 让我知道我的解决方案是否适合您。
标签: java swing audio checkbox javasound