Potrzebuje pomocy, jak mogę w prosty sposób zrealizować odegranie dzwieku wav który mam w tym samym katalogu , po kliknieciu na przycisk?
0
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";
}
}