Witam
Poznaje JLayer własnie i chce napisac prosty program ktory odtwarza/stopuje wybrana piosenke.
Wiec wybieram tę piosenke JFileChooserem, dodaje ją do FileInputStream, potem w AdvancedPlayer dodaje ten stream. No i wywołuje na tym metode play() i sobie gra, jednakze:
- Jak muzyka gra, to cale gui jest zablokowane, dopoki muzyka sie nie skonczy. Probowalem wrzucic to do nowego wątku, ale nie wiem czy dobrze to robilem.
- Nie mam pojecia jak stopować muzyke. Niby AdvancedPlayer ma metode stop() ale ona nie zatrzymuje piosenki jak ją podepne np pod jakis przycisk. Jak jeszcze odtwarzanie piosenki działo się w osobnym wątku, to probowalem wywołać metode stop() na wątku, która jest wg API javy odrzucona, wiec to glupota. Szukalem juz na StacOverflow i wszedzie, wszedzie w googlach i cos nie moge :D Stad pytanie, jak zatrzymac piosenke?
KODU TROCHE:
private File plik;
private AdvancedPlayer ap;
private FileInputStream in;
private Musik roz;
private JButton but;
private Thread watek;
public Musik() throws FileNotFoundException, JavaLayerException, InterruptedException
{
setVisible(true);
setSize(400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
but = new JButton("Stop");
but.setBounds(20,20,100,30);
but.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0)
{
ap.stop();
}
});
add(but);
JFileChooser wybor = new JFileChooser();
Object ob = wybor.showOpenDialog(null);
if(ob.equals(JFileChooser.APPROVE_OPTION))
{
plik = wybor.getSelectedFile();
}
else if(ob.equals(JFileChooser.CANCEL_OPTION))
{
JOptionPane.showMessageDialog(null, "Nie wybrano pliku.");
}
in = new FileInputStream(plik);
ap = new AdvancedPlayer(in);
ap.play();
}
wiec pytanie brzmi, jak zrobić tak, zeby piosenka odtwarzała się, uzywanie programu było możliwe(nie zablokowane gui) i zebym mogl to zastopować?
pozdrawiam ;)
#edit
w razie co strona z jlayerem ;p
http://www.javazoom.net/javalayer/documents.html
podbijam, moze ktos wie?;)