package audio; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; /** * Clase que nos permite aprender a utilizar sonidos. La clase tiene un boton * que al presionarlo toca un sonido. * * @author Magus */ public class Main extends JFrame implements ActionListener { /** El Clip de sonido que voy a tocar */ private Clip clip; private Clip bgm; private JButton btnPlay; /** Creates a new instance of Main */ public Main() { setLayout(new BorderLayout(1,1)); try { /** * Iniciamos un nuevo Clip utilizando el metodo getClip() del * AudioSystem */ clip = AudioSystem.getClip(); /** * Una vez que ya esta iniciado debemos utilizar su metodo open() * para cargar el sonido. El metodo open recibe un AudioInputStream * que podemos obtener del metodo getAudioInputStream de la clase * AudioSystem, este metodo recibe un URL que podemos obtener con * Clase.class.getResource() */ clip.open( AudioSystem.getAudioInputStream( Main.class.getResource("tada.wav"))); } catch (UnsupportedAudioFileException ex) { JOptionPane.showMessageDialog(this, "No se soporta ese formato de audio", "Error", JOptionPane.ERROR_MESSAGE); } catch (LineUnavailableException ex) { JOptionPane.showMessageDialog(this, "No se puede abrir la linea (no hay tarjeta de sonido)", "Error", JOptionPane.ERROR_MESSAGE); } catch (IOException ex) { JOptionPane.showMessageDialog(this, "No se puede abrir el archivo", "Error", JOptionPane.ERROR_MESSAGE); } /** * Creamos un boton y le ponemos un ActionListener para que escuche * eventos, cuando el boton sea presionado debe de tocar un sonido. */ btnPlay = new JButton("Play"); btnPlay.addActionListener(this); getContentPane().add(btnPlay); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300,300); setTitle("Audio"); setVisible(true); } /** * @param args the command line arguments */ public static void main(String[] args) { Main app = new Main(); } public void actionPerformed(ActionEvent e) { /** * Una vez que ya creamos el Clip podemos utilizarlo en * toda la aplicacion con los metodos start(), loop() y stop(). */ clip.start(); } }