java - 我在尝试制作随机歌曲播放器时失败了

标签 java swing button audio switch-statement

我尝试创建一个系统,您可以在其中单击按钮,它会播放五个可能的随机 midi 文件。它总是只播放第一首歌请帮助。整数 i 是随机选择的,但是由于我不知道的原因,URL 不会从 sus2 改变,因此音频保持不变。

import java.net.URL;
import java.awt.event.*;

import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Option extends JFrame implements ActionListener{   


/**
 * 
 */
private static final long serialVersionUID = 1L;
URL image= this.getClass().getResource("/tick.png");
URL url = this.getClass().getResource("/sus.mid");
ImageIcon img = new ImageIcon(image);
JButton testBut = new JButton(img);
JPanel pnl = new JPanel();
java.applet.AudioClip audio = JApplet.newAudioClip(url);

public Option(){
    super("Swing Window");

    pnl.add(testBut);
    add(pnl);
    setSize( 500,350);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);
    testBut.addActionListener(this);




}
public void actionPerformed(ActionEvent event){

    if (event.getSource() == testBut) {
        int i = (int) Math.ceil(Math.random() * 5);
        switch(i){
        case 1: url = this.getClass().getResource("/sus.mid");
        case 2: url = this.getClass().getResource("/sus2.mid");
        case 3: url = this.getClass().getResource("/sus3.mid");
        case 4: url = this.getClass().getResource("/sus4.mid");
        case 5: url = this.getClass().getResource("/sus5.mid");

        System.out.println(i);
        }
        audio = JApplet.newAudioClip(url);
        audio.stop();
        audio.play();
    }
}

public static void main(String[] args){
Option gui = new Option();

}
}

最佳答案

您忘记了每个 case block 之后的 break 指令:

case 1: 
    url = this.getClass().getResource("/sus.mid");
    break;

case 2: 
    url = this.getClass().getResource("/sus2.mid");
    break;
...

关于java - 我在尝试制作随机歌曲播放器时失败了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26546931/

相关文章:

Java 电子邮件解析器

java - J2EE : Singleton vs keeping things in session

java - 垂直滚动条覆盖jtable的最后一列数据(最后一列数据右对齐)

java - 通过前一个标签的验证将 ImageIcon 设置为另一个类中的标签

android - 如何刷新我的gridView?

java - 继承类之间的静态方法 - Java

java - Neo4j节点索引: how to change Lucene default similarity?

java - 按键监听器不工作

java - 按下按钮时画一个圆圈

具有重复按钮元素的 JQuery addClass/hasClass