Jak zmusic przycisk do odegrania dzwieku

0

Potrzebuje pomocy, jak mogę w prosty sposób zrealizować odegranie dzwieku wav który mam w tym samym katalogu , po kliknieciu na przycisk?

0

Zakładam, że wiesz jak obsługiwać zdarzenia.
W obsłudze zdarzenia daj coś takiego:

try
{
    clipFile=new URL("file:"+name);
    clip=Applet.newAudioClip(clipFile);
    if (clip!=null)
    {
        clip.play();
    }
}
catch (MalformedURLException e)
{
}

zmienna name zawiera nazwę pliku

0

Gdy to zrobilem i kliknolem na przycisk pojawilo mi sie cos takiego

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

A dzwieku jak NIE MA tak nie ma

0

Nie wiem co naknociłeś, masz tu cały kod, który odtwarza, odtwarza w pętli i zatrzymuje

import java.applet.*;
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;

public class Odtwarzacz extends JFrame implements ActionListener
{
    URL clipFile=null;
    AudioClip clip=null;
    JButton open=new JButton(new ImageIcon("Open.gif"));
    JButton play=new JButton(new ImageIcon("Play.gif"));
    JButton loop=new JButton(new ImageIcon("Loop.gif"));
    JButton stop=new JButton(new ImageIcon("Stop.gif"));
    JFileChooser fc=new JFileChooser(".");
    JLabel nazwa=new JLabel("");
    //------------------------
    public static void main(String[] args)
    {
        new Odtwarzacz();
    }
    //------------------------
    public Odtwarzacz()
    {
        super("Klasa AudioClip");
        setLayout(new BorderLayout(2,2));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JToolBar tb=new JToolBar();

        open.addActionListener(this);
        open.setToolTipText("Wybór pliku");
        tb.add(open);

        play.addActionListener(this);
        play.setToolTipText("Odtwarzanie");
        play.setEnabled(false);
        tb.add(play);

        loop.addActionListener(this);
        loop.setToolTipText("Odtwarzanie w pętli");
        loop.setEnabled(false);
        tb.add(loop);

        stop.addActionListener(this);
        stop.setToolTipText("Zatrzymanie");
        stop.setEnabled(false);
        tb.add(stop);

        add(tb,"North");

        JPanel p=new JPanel();
        p.setLayout(new FlowLayout(FlowLayout.CENTER));
        p.add(nazwa);
        p.setPreferredSize(new Dimension(400,60));
        add(p,"Center");

        fc.setFileFilter(new Filtr());

        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
    //------------------------
    public void actionPerformed(ActionEvent ae)
    {
        JButton source=(JButton) ae.getSource();
        if (source==open)
        {
            int wybor=fc.showOpenDialog(this);
            if (wybor==JFileChooser.APPROVE_OPTION)
            {
                String name="";
                try
                {
                    name=fc.getSelectedFile().getCanonicalPath();
                }
                catch (IOException e)
                {
                }
                nazwa.setText(name);
                try
                {
                    clipFile=new URL("file:"+name);
                    clip=Applet.newAudioClip(clipFile);
                    if (clip!=null)
                    {
                        play.setEnabled(true);
                        loop.setEnabled(true);
                    }
                }
                catch (MalformedURLException e)
                {
                }
                return;
            }
        }
        if (source==play)
        {
            clip.play();
            stop.setEnabled(true);
            return;
        }
        if (source==loop)
        {
            clip.loop();
            stop.setEnabled(true);
            return;
        }
        if (source==stop)
        {
            clip.stop();
            stop.setEnabled(false);
        }
    }
}

//------------------------------------------------

class Filtr extends FileFilter
{
    public boolean accept(File f)
    {
        String name=f.getName().toUpperCase();
        return (f.isDirectory() || name.endsWith(".WAV") || name.endsWith(".MID"));
    }
    public String getDescription()
    {
        return "Pliki *.WAV *.MID";
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0