Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Crea un JButton con sonido para tus aplicaciones

Crea un JButton con sonido para tus aplicaciones

Por jc mouse viernes, diciembre 4, 2020

En este post crearemos un botón swing que reproducirá un sonido cuando este sea presionado por el usuario.  Sin mas que añadir, pongamonos manos a la obra.

¿Qué necesitamos?

  • Netbeans 8.x o superior
  • Archivo de sonido WAV de menos de 1 segundo de duración

Nivel: Novato

Tiempo: 15 minutos

Paso 1. Proyecto base

Creamos un nuevo proyecto en Netbeans, para ellos vamos al menú Archivo -> Proyecto Nuevo, Seleccionamos la categoría Java y en tipo de proyecto seleccionamos Java Aplication. El nombre del proyecto será «JButton con sonido«.

proyecto sonido envolvente

Paso 2. JButton personalizado

Cuando se crean componentes personalizados, es recomendable separar estos del resto de la lógica del proyecto utilizando una estructura de paquetes, esto con el fin de que puedan ser fácilmente mantenibles en el tiempo, por ejemplo, nosotros crearemos un paquete «componentes» y dentro un paquete con el nombre de «botones»,  si el componentes utilizara otro tipo de archivos como imágenes por ejemplo, se crearía un paquete «recursos».

Dentro el paquete «botones«, creamos una clase con el nombre de «BotonConSonido.java», nuestro proyecto queda de la siguiente forma:

files wav java code

A continuación pegamos el siguiente código:

package org.example.componentes.botones;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystems;
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;
import javax.swing.JButton;
/**
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public class BotonConSonido extends JButton {
    
    private final File archivowav;
    private Clip clip;
    private AudioInputStream audioInputStream;

    /**
     * Constructor de clase
     */
    public BotonConSonido() {        
       super("Dale Clic");    
       
       archivowav = new File(
                FileSystems.getDefault().getPath("")
                        .toAbsolutePath() + "/recursos/pedo.wav");
        
        //Cuando se presione el boton, se reproducira el sonido
        BotonConSonido.this.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {                
                 play();
            }

        });
    }
    
    /**
     * Metodo para reproducir un archivo de audio 
     */
    private void play(){
        try {
            audioInputStream = AudioSystem.getAudioInputStream(archivowav);            
            clip = AudioSystem.getClip();
            clip.open(audioInputStream);            
            clip.start();
        } catch (LineUnavailableException | IOException| UnsupportedAudioFileException e) {
            System.err.println(e.getMessage());
        }
    }

}

Paso 3. Archivo de audio WAV

Ahora, en la carpeta raíz del proyecto netbeans, creamos una nueva carpeta con el nombre de «recursos» y colocamos ahí nuestro archivo de audio como se ve a continuación:

files au

Paso 4. Probando nuestro botón con sonido

Para terminar nuestro post, debemos crear una interfaz de usuario donde colocar el botón, para ello pegamos en el archivo Main.java el siguiente código:

package org.example;

import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import org.example.componentes.botones.BotonConSonido;
/**
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class Main {

    public void init() {
        JFrame frame = new JFrame("Boton con sonido");
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        BotonConSonido boton = new BotonConSonido();
        frame.add(boton);
        frame.setSize(400, 220);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new Main().init();
    }

}

Finalmente ejecutamos y tenemos:

dale playyyy!!!

enjoy!

Tags

Artículos similares

Añade un PlaceHolder a un JTextField

PlaceHolder: PlaceHolder es un atributo propio de HTML5 y es el texto que aparece dentro de un campo de texto (un JTextF[...]

FOCA: Herramienta para recolección y análisis de Metadatos

La recolección de información (Information Gathering) es una de las partes más importantes en la planificación y ataques[...]

Crea una ventana de dialogo «Acerca de…» personalizado

Cuando se crean aplicaciones android o cualquier otro tipo de software, es importante dejar información del o los desarr[...]

Impresión de Interfaz Gráfica de Usuario

En este post veremos como imprimir secciones de un formulario en java implementando la Interface Printable. La clase que[...]

Crear imagen dinamicamente y agregar a un objeto swing

Si bien se puede hacer uso de archivos de imagen (jpg, png, bmp, etc) en las aplicaciones java, también este te permite[...]

Reproducir video en JFrame Swing con JavaFX

JavaFX un producto de  Sun Microsystems/Oracle Corporation que salio a la luz para competir con tecnologías como Flash o[...]