2017-03-16 37 views
2

我一直在想我的大脑试图让这个循环的wav暂停一下, 我在哪里出错了?这有助于OP的解决方案如何创建一个按下两次后会暂停的jToggle按钮?

private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) {            
     JToggleButton btn = (JToggleButton) evt.getSource(); 
      if (btn.isSelected()) { 
      try { 
       String soundName = "yourSound.wav"; 
       AudioInputStream audioInputStream = null; 
       try { 
        audioInputStream = AudioSystem.getAudioInputStream(new File(soundName).getAbsoluteFile()); 
       } catch (UnsupportedAudioFileException | IOException ex) { 
        Logger.getLogger(GEN.class.getName()).log(Level.SEVERE, null, ex); 
       } 
       Clip clip = null; 
       try { 
        clip = AudioSystem.getClip(); 
       } catch (LineUnavailableException ex) { 
        Logger.getLogger(GEN.class.getName()).log(Level.SEVERE, null, ex); 
       } 
       clip.open(audioInputStream); 
       clip.start(); 
       clip.loop(100); 
      } catch (LineUnavailableException | IOException ex) { 
       Logger.getLogger(GEN.class.getName()).log(Level.SEVERE, null, ex); 
      } 
      } else { 
      try { 
} 
+0

开关按钮应该有只有两种状态。你可以查看[this](http://stackoverflow.com/a/7524627/1572356)SO回答知道如何获得按钮的状态。 –

+0

注册这两个状态不是问题,我已经用打印输出功能测试过,我的问题是在第二次点击注册时停止循环音频 – Sc001010tt

+0

Clip对象上有一个“stop”方法可用。在方法外定义剪辑。如果按钮未切换,则剪辑不为空,并剪辑“isRunning()”和“stop()”。 –

回答

0

大纲:

private Clip clip; // declared outside the method 

private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
    JToggleButton btn = (JToggleButton) evt.getSource(); 
    if (btn.isSelected()) { 
     // initialize `clip` variable, if not done already 
     // call start() if not running 
    } else { 
     if (clip != null && clip.isRunning()) { 
      clip.stop(); 
     } 
    } 
} 
相关问题