2013-11-18 1 views
0

Сначала я скажу, что у меня есть открытие Jframe и остается открытым на 10 секунд. Я написал несколько игр для детей, чтобы показать им, что может быть в будущем в программировании или в компьютерной науке ... в любом случаеПопытка получить звук аплодисментов для воспроизведения при открытии jframe

Кто бы ни выиграл, у меня есть другая Jframe, предназначенная для всплытия, когда это происходит, мне хотелось бы, чтобы звуковой клип играл , В настоящее время звуковой клип находится в исходной папке, и у меня есть небольшой способ воспроизвести его, но он не работает. Вот код

import java.awt.event.*; 
import java.awt.*; 
import javax.swing.*; 
import java.io.IOException; 
import java.net.URL; 
import javax.sound.sampled.AudioInputStream; 
import javax.sound.sampled.AudioSystem; 
import javax.sound.sampled.Clip; 
import javax.sound.sampled.LineUnavailableException; 
import javax.sound.sampled.UnsupportedAudioFileException; 

public class HoorayWithTimer extends javax.swing.JFrame { 

int counter; 

public HoorayWithTimer() { 
    initComponents(); 


    Clip click = clipOpen("applause3.wav");// should open the clip 
    clipStart(click); 


}//end of public HorrayWithTimer() 
/* 
* This method is called from within the constructor to initialize the form. 
* WARNING: Do NOT modify this code. The content of this method is always 
* regenerated by the Form Editor. 
*/ 

@SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code"> 
private void initComponents() { 

    timerLabel = new javax.swing.JLabel(); 
    jLabel1 = new javax.swing.JLabel(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 
    setPreferredSize(new java.awt.Dimension(571, 410)); 
    getContentPane().setLayout(null); 
    getContentPane().add(timerLabel); 
    timerLabel.setBounds(632, 411, 66, 29); 
    timerLabel.getAccessibleContext().setAccessibleName("timerLabel"); 

    jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/party_balloons_scaled.png"))); // NOI18N 
    getContentPane().add(jLabel1); 
    jLabel1.setBounds(0, 0, 560, 540); 

    Timer timer = new Timer(10000, new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     HoorayWithTimer.this.setVisible(false); 
     HoorayWithTimer.this.dispose(); 
    } 
    }); 
    timer.start(); 


    pack(); 
}// </editor-fold> 

/** 
* @param args the command line arguments 
*/ 
private Clip clipOpen(String name)// method to play clip 
{ 
    URL url = getClass().getResource(name); 
    try { 
     AudioInputStream stream = AudioSystem.getAudioInputStream(url); 
     Clip clip = AudioSystem.getClip(); 
     clip.open(stream); 
     return clip; 
    } catch (UnsupportedAudioFileException | IOException | LineUnavailableException ex) { 
    } 

    return null; 
} 

private void clipStart(Clip clip) { 
    clip.start(); 
} 

public static void main(String args[]) { 
    /* Set the Nimbus look and feel */ 
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
    * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
    */ 
    try { 
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
      if ("Nimbus".equals(info.getName())) { 
       javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
       break; 
      } 
     } 
    } catch (ClassNotFoundException ex) { 
     java.util.logging.Logger.getLogger(HoorayWithTimer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (InstantiationException ex) { 
     java.util.logging.Logger.getLogger(HoorayWithTimer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (IllegalAccessException ex) { 
     java.util.logging.Logger.getLogger(HoorayWithTimer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger(HoorayWithTimer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } 
    //</editor-fold> 



    /* Create and display the form */ 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      new HoorayWithTimer().setVisible(true); 

     } 
    }); 

} 
// Variables declaration - do not modify 
private javax.swing.JLabel jLabel1; 
private javax.swing.JLabel timerLabel; 
// End of variables declaration 
} 
+0

его на самом деле для обучения службы проекта для школы – user2915917

ответ

0

Я думаю, что проблема здесь clipOpen("applause3.wav"). Попробуйте использовать /applause3.wav. Также где ваш wav-файл? Например, он работает для моего пути "/res/1.mp3", 1.mp3 файл существует в res папке в папке src.

EDIT: Заменить код и смотреть исключение, это здесь не в clipStart метода:

private Clip clipOpen(String name){ 
URL url = getClass().getResource(name); 
try { 
    AudioInputStream stream = AudioSystem.getAudioInputStream(url); 
    Clip clip = AudioSystem.getClip(); 
    clip.open(stream); 
    return clip; 
} catch (UnsupportedAudioFileException | IOException | LineUnavailableException ex) { 
    ex.printStackTrace() 
} 

return null; 
} 
+0

файл WAV находится только в папке Src. – user2915917

+0

, даже с/i я получаю кучу исключений null-указателей, которые исчезают, когда я удаляю Clip клик = clipOpen ("/ applause3.wav"); clipStart (щелкните); – user2915917

+0

где ваши исключения? – alex2410