Ich habe an diesem Code für eine wirklich lange Zeit gearbeitet und ich kann einfach nicht mein Problem herausfinden. ich möchte in der lage sein, eine liste von liedern nacheinander abzuspielen, und ich dachte, ich könnte das mit einer einfachen rekursiven methode tun, die die durchschnittliche länge eines liedes verzögert und es das nächste lied aufrufen und abspielen lässt. .. Es spielt aber nur das allererste Lied und hört danach auf und es passiert nichts mehr ... Ich habe zahllose Leute gebeten, das anzuschauen und niemand kann mir helfen .. Und nein, das ist kein Schulprojekt, das ist es ein Musik-Player, den meine Mutter gerne auf einer Party am kommenden Wochenende nutzen würde, also ist das wie bei meinem letzten Versuch ... Jede Hilfe wäre sehr willkommen !!!Warum spielt mein Programm den nächsten Song im Array nicht ab?
private JLabel messageLabel;
private JButton playlist;
private JPanel panel;
BufferedImage image;
AudioStream audioStream1, audioStream2, audioStream3;
//Object[] music = new Object[3];
private final int WINDOW_WIDTH = 800;
private final int WINDOW_HEIGHT = 525;
// File destinationss
private String s1 = "C:\\Users\\Tony\\Desktop\\Java\\NetBeansProjects\\Gui Stuff\\src\\No_Pressure.wav";
private String s2 = "C:\\Users\\Tony\\Desktop\\Java\\NetBeansProjects\\Gui Stuff\\src\\Grateful_Dead_-_Touch_of_Grey.wav";
private String s3 = "C:\\Users\\Tony\\Desktop\\Java\\NetBeansProjects\\Gui Stuff\\src\\Stairway_to_Heaven_Led_Zeppelin_Lyrics.wav";
InputStream in1 = new FileInputStream(s1);
InputStream in2 = new FileInputStream(s2);
InputStream in3 = new FileInputStream(s3);
private ArrayList music;
public JukeBoxWithArrays() throws IOException {
music = new ArrayList();
audioStream1 = new AudioStream(in1);
audioStream2 = new AudioStream(in2);
audioStream3 = new AudioStream(in3);
music.add(audioStream1);
music.add(audioStream2);
music.add(audioStream3);
setTitle("Juke Box Playlist");
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
messageLabel = new JLabel("Click the Button to play the playlist");
// Create the Playlist button
playlist = new JButton("Playlist number 1");
// Register the event Listener
playlist.addActionListener(new PlaylistListener());
// Create the panel
panel = new JPanel();
image = ImageIO.read(new File("C:\\Users\\Tony\\Desktop\\Java\\NetBeansProjects\\Gui Stuff\\src\\jukebox2.jpg"));
panel.add(messageLabel);
panel.add(playlist);
panel.add((new JLabel(new ImageIcon(image))));
// Add the panel to the Content Pane
add(panel);
// Display the Window
setVisible(true);
}
private class PlaylistListener implements ActionListener {
int x = 0;
public void actionPerformed(ActionEvent e) {
try {
playMusic(x);
} catch (InterruptedException ex) {
Logger.getLogger(JukeBoxWithArrays.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void playMusic(int x) throws InterruptedException {
if (x > music.size()) {
AudioPlayer.player.stop((InputStream) music.get(x));
} else {
AudioPlayer.player.start((InputStream) music.get(x));
}
Thread.sleep(5 * 60 * 1000); // I believe this is where I am running into my problem
playMusic(x++);
}
}
@SuppressWarnings("restriction")
public static void main(String[] args) throws Exception {
JukeBoxWithArrays jbwa = new JukeBoxWithArrays();
jbwa.pack();
}
}
OK Ich werde Sie nicht fragen, warum Ihre Mutter möchte, dass Sie diese verwenden, anstatt spotify ... egal ... wo dieser Code herkommt? Hast du versucht es zu debuggen? Warum denkst du, dass thread.sleep (5 * 60 * 1000) das Problem verursacht? – Paolof76
Ich denke, das verursacht das Problem, denn bevor ich das hinzugefügt habe, hat die Methode funktioniert, aber die Songs würden übereinander gespielt. Alles, was ich zu tun versuchte, war, sie auseinander zu halten, so dass einer spielen würde und dann der nächste und so weiter. – amich