hallo,
habe mir zum ziel gesetzt eine Art Musikplayer zu programmieren.
Meine Frage bezieht sich auf den Code(unten) und zwar sollte dort doch wenn man ein 2mal auf play drückt der alte player verschwinden, bei mir wird aber dann beim 2mal 2ControlPanel angezeigt und ich kann auch, wenn ich bei beiden auf play drücke 2 lieder abspielen. Wie kann ich das verhindern?
Danke
habe mir zum ziel gesetzt eine Art Musikplayer zu programmieren.
Meine Frage bezieht sich auf den Code(unten) und zwar sollte dort doch wenn man ein 2mal auf play drückt der alte player verschwinden, bei mir wird aber dann beim 2mal 2ControlPanel angezeigt und ich kann auch, wenn ich bei beiden auf play drücke 2 lieder abspielen. Wie kann ich das verhindern?
Code:
public void laden() {
JFileChooser d = new JFileChooser();
d.setMultiSelectionEnabled(false);
d.addChoosableFileFilter(new DateiFilter());
if (d.showDialog(fenster, "Musik laden") == JFileChooser.APPROVE_OPTION) {
dateiname = d.getSelectedFile();
try{
playSong(dateiname);;
} catch (Exception e){
System.out.println(e);
}
}
return;
}
public void stopSong() {
if (player != null) {
player.stop();
player.setMediaTime(new Time(0));
player.close();
stopPlayer();
}
}
public void setTime(double seconds) {
if (player != null) {
player.setMediaTime(new Time((double)seconds));
}
}
private void makePlayerReady() {
int state = player.getState();
while(state != Controller.Started) {
try {
Thread.sleep(50);
state = player.getState();
}
catch(InterruptedException e) {
JOptionPane.showMessageDialog(null,
e,
"Fehler",
JOptionPane.ERROR_MESSAGE);
}
}
}
private synchronized void stopPlayer() {
int state = player.getState();
while(state == Controller.Started) {
try {
Thread.sleep(60);
state = player.getState();
}
catch(InterruptedException e) {
JOptionPane.showMessageDialog(null,
e,
"Fehler",
JOptionPane.ERROR_MESSAGE);
}
}
}
public synchronized void playSong(File mf) {
try {
if (player != null) {
stopSong();
}
player = Manager.createPlayer(new MediaLocator(mf.toURL()));
player.start();
makePlayerReady();
control.add(player.getControlPanelComponent());
}
catch (IOException e) {
e.printStackTrace();
}
catch (NoPlayerException e) {
e.printStackTrace();
}
}
Danke