2012-05-13 1 views
3

J'ai créé un class pour jouer le son lorsque je clique sur les boutons.Java aucun son joué pour le bouton

Voici le code:

public void playSound() 
    { 
     try 
     { 
      AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("beep-1.wav")); 
      Clip clip = AudioSystem.getClip(); 
      clip.open(audioInputStream); 
      clip.start(); 
     } 
     catch(Exception e) 
     { 
      System.out.println("Error with playing sound."); 
     } 
    } 

Quand je veux mettre en œuvre dans le la méthode ButtonListener, il est semble pas comme son est joué.

Voici le code ButtonListener:

private class ButtonListener implements ActionListener 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      if (replayButton == e.getSource()) 
      { 
       playSound(); 
      } 
     } 
    } 

Quel est le problème avec le code?

EDIT:

Fondamentalement, je suis en train de créer un simple jeu de mémoire, et je veux ajouter du son aux boutons lorsque vous cliquez dessus.

SOLVED:

On dirait que le fichier audio que j'ai téléchargé à partir Soundjay problème obtenu, et par conséquent, le fichier audio ne peut être lu. @ _

Répondre

3

Cela devrait fonctionner:

public class Test extends JFrame { 

    public static void main(String[] args) { 
     new Test(); 
    } 

    public Test() { 
     JButton button = new JButton("play"); 
     button.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
       playSound(); 
     }}); 
     this.getContentPane().add(button); 
     this.setVisible(true); 
    } 

    public void playSound() { 
     try { 
      AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("beep.wav")); 
      Clip clip = AudioSystem.getClip(); 
      clip.open(audioInputStream); 
      clip.start(); 
     } 
     catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Notez que lors de la lecture de votre fichier, l'interface graphique ne sera pas responsable. Utilisez l'approche de Joop Eggen dans votre auditeur pour corriger cela. Il va jouer le fichier asynchrone.

SwingUtilities.invokeLater(new Runnable() { 
    public void run() { 
     playSound(); 
    } 
}); 
+0

Je ne ... quoi que ce soit ici :( –

+0

sont vos haut-parleurs;) –

+0

Oui ... je l'ai déjà posé des questions sur cela, mais j'arent obtenir de réponse: / –

4

Utilisez

SwingUtilities.invokeLater(new Runnable() { 
    @Override 
    public void run() { 
     playSound(); 
    } 
}); 
Questions connexes