Я работаю над этим кодом очень долго, и я просто не могу понять свою проблему. я хочу, чтобы иметь возможность воспроизводить список песен один за другим, и я думал, что смогу сделать это с помощью простого рекурсивного метода, который задерживает среднюю длину песни, и позвольте ей вызвать следующую песню и воспроизвести ее. .. Однако он играет только самую первую песню, а затем останавливается после этого, и больше ничего не происходит ... Я попросил бесчисленное множество людей посмотреть на это, и никто не может мне помочь. И нет, это не школьный проект, это музыка, которую мама хотела бы мне использовать на вечеринке в следующий предстоящий уик-энд, так что это похоже на мое последнее усилие в канаве ... Любая помощь с этим будет очень признательна !!!Почему моя программа не будет воспроизводить следующую песню в массиве?
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 Я не буду спрашивать вас, почему ваша мать хочет, чтобы вы использовали это вместо того, чтобы выявлять ... в любом случае ... откуда этот код? Вы пытались отладить его? Почему вы думаете, что thread.sleep (5 * 60 * 1000) вызывает проблему? – Paolof76
Я думаю, что это вызывает проблему, потому что, прежде чем я добавил, что метод работал, но песни будут играть поверх друг друга. Таким образом, все, что я пытался сделать, это разделить их на части, чтобы можно было играть, а затем следующий и т. Д. – amich