Pessoal, estou precisando de um programa que toque um arquivo de som.
Fiz isso:
public class TesteAudio extends JFrame {
private JButton tocar ,parar;
private Container c = getContentPane();
private JPanel painel ;
private Audio audio = new Audio();
Player player = null;
public TesteAudio() {
this.setTitle("Player");
this.setLocation(260,100);
this.setSize(600,450);
c.setLayout(null);
c.setBackground(Color.black);
tocar = new JButton("play");
tocar.addActionListener(new AcaoBotao());
tocar.setBounds(185,370,85,25);
parar = new JButton("stop");
parar.addActionListener(new AcaoBotao());
parar.setBounds(285,370,85,25);
painel = new JPanel();
painel.setBorder(BorderFactory.createLineBorder(Color.blue,2));
painel.setBounds(16,20,550,330);
c.add(tocar);
c.add(parar);
this.setVisible(true);
}
public void adicionarComponente(JPanel p){
c.add(p);
}
private class AcaoBotao implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == tocar){
try {
loadFile loadF = new loadFile();
URL path = loadF.load(2);
audio.setAudio(path);
player = Manager.createRealizedPlayer(audio.getAudio());
Component controle = player.getControlPanelComponent() ;
painel.add(controle,BorderLayout.SOUTH);
adicionarComponente(painel);
repaint();
player.start();
}
catch (NoPlayerException e1) {
JOptionPane.showMessageDialog(null, "NoPlayerException", "Exception", JOptionPane.ERROR_MESSAGE);
e1.printStackTrace();
}
catch (IOException e2) {
JOptionPane.showMessageDialog(null, "IOException", "Exception", JOptionPane.ERROR_MESSAGE);
e2.printStackTrace();
}
catch (CannotRealizeException e3) {
JOptionPane.showMessageDialog(null, "CannotRealizeException", "Exception", JOptionPane.ERROR_MESSAGE);
e3.printStackTrace();
}
}
if(e.getSource() == parar){
try{
player.stop();
}
catch(Exception exc){
JOptionPane.showMessageDialog(null, "Nenhum arquivo está sendo tocado", "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
}
public static void main(String arg[]){
TesteAudio t = new TesteAudio();
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
A classe loadFile é a seguinte:
public class loadFile{
public URL load(int selectionMode){
JOptionPane.showMessageDialog(null, "Passou por aqui");
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(selectionMode);
int result = chooser.showOpenDialog(null);
if (result == JFileChooser.CANCEL_OPTION){
return null;
}
else{
JFileChooser file = new JFileChooser();
URL path = null;
try {
path = file.getSelectedFile().toURL();
} catch (MalformedURLException e) {
e.printStackTrace();
}
return path;
}
}
}
e a classe Audio:
public class Audio extends JPanel {
private URL audio = null ;
public URL getAudio() {
return audio;
}
public void setAudio(URL audio) {
this.audio = audio;
}
}
Mas nao funciona.
clico em play, ele abre o filechooser mas não toca o arquivo que eu escolho.
Alguém poderia me ajudar?