2013-07-22 8 views
0

Я делаю предупреждение о безопасности, если пользователь вводит неверный пароль более 5 раз, затем он выталкивает кадр, который просит пользователя разблокировать, и кадр также будет продолжать цикл звукового сигнала , После того как пользователь разблокирует его, он вернется к файлу регистрации. Моя проблема заключается в том, что после того, как я разблокирую ее, система вернется к блоку регистрации, но звук все еще работает. Зачем?Как остановить звук при открытии нового JFrame

Это мой код кнопки прыжок назад для входа фрейм

Staff s = new Staff(); 
     String id = m_id.getText(); 
     String pass = m_pass.getText(); 
     String position = "Manager"; 
     try{ 
      String sql = "Select * from Staff Where Position='"+position+"'"; 
      pst=conn.prepareStatement(sql); 
      rs=pst.executeQuery(); 

      while(rs.next()){ 
       String add = rs.getString("Staff_ID"); 
       s.setStaff_ID(add); 

       String add2 = rs.getString("Password"); 
       s.setPassword(add2); 

      } 

      if((s.getStaff_ID().equals(id)) && (s.getPassword().equals(pass))){ 
        warning(clip); 
       dispose(); 
       new login().setVisible(true); 

      } 

     }catch(Exception e){ 
      JOptionPane.showMessageDialog(null,e.getMessage()); 
     } 

и я использую это петля звук

private void warning(){ 
     try { 

     URL url = this.getClass().getClassLoader().getResource("sound/aleart.wav"); 
     AudioInputStream audioIn = AudioSystem.getAudioInputStream(url); 

     Clip clip = AudioSystem.getClip(); 

     clip.open(audioIn); 
     clip.loop(Clip.LOOP_CONTINUOUSLY); 

         }catch(Exception ex){ 
      JOptionPane.showMessageDialog(null, ex.getMessage()); 
     } 
    } 

Мое имя графического интерфейса WarningLogin и я называю warning() здесь.

public WarningLogin() { 
       initComponents(); 
       warning(); 
} 
+0

Вы пытались остановить или закрыть клип? – MadProgrammer

+0

Я стараюсь раньше, но, может быть, я поставил в неправильное место ?? Где я должен положить? – Q123Q

ответ

0

Первый clip должен быть экземпляр поля вами класса ...

public class ... { 

    private Clip clip; 

Затем, когда вы создаете, вы должны ссылаться на это значение ...

//Clip clip = AudioSystem.getClip(); 
clip = AudioSystem.getClip(); 

Теперь, я бы, вероятно, использовал WindowListener, и когда событие windowClosing поднято, попробуйте позвонить clip.stop() и потому, что я педантичен, clip.close()

+0

спасибо, он работает. и затем я набираю clip.stop(); в методе я открываю рамку входа и звуковую остановку ... Еще раз спасибо – Q123Q

+0

Приятно знать, что это сработало ... видно, что я на самом деле никогда не использовал «AudioSystem»: P – MadProgrammer

Смежные вопросы