2015-12-07 105 views
0

我正在創建一個簡單播放和停止按鈕,讓用戶預覽歌曲。 JButton1是播放按鈕,而JButton3應該是停止按鈕。但是當我點擊JButton3時,歌曲繼續播放。有什麼可以使jButton3正確行事嗎?使用JButton播放和停止媒體

public PlayMusic() { 
    initComponents(); 
} 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           

    try{ 
     if(evt.getSource()== jButton1){ 
     InputStream in = new FileInputStream(new File("C:\\Users\\A\\Downloads\\Music\\I.wav")); 
     AudioStream ikon = new AudioStream(in);   
     AudioPlayer.player.start(ikon); } 
    }catch(Exception e){ 
     JOptionPane.showMessageDialog(null,e);} 

}         

jButton3ActionPerformed的()

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {           
     try{ 
     InputStream in = new FileInputStream(new File("C:\\Users\\A\\Downloads\\Music\\I.wav")); 
     AudioStream ikon = new AudioStream(in);  
     if(evt.getSource()== jButton3) 
     { 
     AudioPlayer.player.stop(ikon); 
     } 
     }catch(Exception e){ 
     JOptionPane.showMessageDialog(null,e);} 
}    

回答

0

你需要傳遞的 '語音串流IKON' 同一個對象,它使用的是玩,停止播放音頻。

一個快速骯髒的修復,

public class Myplay{ 


public static void main(String[] args) { 
    ...... YOUR CODE TO FOR UI....... 
JButton btn1 = new JButton("Play"); 
    btn1.addActionListener(new ButtonListener()); 
    add(btn1); // ADD BUTTON TO JPanel 
JButton btn2 = new JButton("Stop"); 
    btn2.addActionListener(new ButtonListener()); 
    add(btn2); // ADD BUTTON TO JPanel 
    } 
} 

} 

class ButtonListener implements ActionListener { 

ButtonListener() { 
InputStream in = new FileInputStream(new File("C:\\Users\\A\\Downloads\\Music\\I.wav")); 
AudioStream ikon = new AudioStream(in); 
} 

    public void actionPerformed(ActionEvent e) { 
    if (e.getActionCommand().equals("Play")) { 
     AudioPlayer.player.start(ikon); 
    } 
if (e.getActionCommand().equals("Stop")) { 
     AudioPlayer.player.stop(ikon); 
    } 
    } 
} 

UPDATE 我建議你做以下

public PlayMusic() { 
initComponents(); 
initAudioStream(); 
} 

AudioStream ikon; 

private void initAudioStream(){ 
      InputStream in = new FileInputStream(new File("C:\\Users\\A\\Downloads\\Music\\I.wav")); 
      ikon = new AudioStream(in);   
} 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           

    try{ 
     if(evt.getSource()== jButton1){ 

     AudioPlayer.player.start(ikon); } 
    }catch(Exception e){ 
     JOptionPane.showMessageDialog(null,e);} 

} 

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {           
     try{ 
     if(evt.getSource()== jButton3) 
     { 
     AudioPlayer.player.stop(ikon); 
     } 
     }catch(Exception e){ 
     JOptionPane.showMessageDialog(null,e);} 
} 
+0

兩個「語音串流」引用變量有相同的名稱並不意味着你逝去同一個對象。從我看到的,就是我所能說的。如果您需要更多幫助,請嘗試發佈更多代碼。 – Gokul

+0

我剛纔編輯了我的帖子。 –

+0

您沒有傳遞SAME對象,而是正在創建一個具有相同名稱的新對象。檢查更新,這應該解決它。 – Gokul