Tocar arquivo de som em java

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?