Java 试图在第二次按JButton键时停止播放wav文件
它可以找到.wav文件,但按下JButton时不会播放该文件。我最近在这里问了一个类似的问题,关于这段代码,以及它如何不会在第二次按下JButton键时停止,而是创建一个新的音频实例。一位好心的人建议我将变量改为实例字段,我在这方面的经验很少。我试图改变它们,但很可能是我做错了。这是我的密码:Java 试图在第二次按JButton键时停止播放wav文件,java,audio,wav,Java,Audio,Wav,它可以找到.wav文件,但按下JButton时不会播放该文件。我最近在这里问了一个类似的问题,关于这段代码,以及它如何不会在第二次按下JButton键时停止,而是创建一个新的音频实例。一位好心的人建议我将变量改为实例字段,我在这方面的经验很少。我试图改变它们,但很可能是我做错了。这是我的密码: import java.net.MalformedURLException; import java.lang.NullPointerException; import java.lang.Illeg
import java.net.MalformedURLException;
import java.lang.NullPointerException;
import java.lang.IllegalArgumentException;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.net.URL;
import javax.sound.sampled.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class aMeme extends JFrame implements ActionListener{
public JButton button;
public boolean check;
public boolean audio;
public static URL fg;
public static AudioInputStream gram;
public static Clip fitness;
static{
try{
URL fg = new URL ("file:c:/Users/kebrobst18/Downloads/test.wav");
Clip fitness = AudioSystem.getClip();
AudioInputStream gram = AudioSystem.getAudioInputStream(fg);
}
catch (LineUnavailableException f){
}
catch (UnsupportedAudioFileException | IOException f) {
}
}
public void paint(Graphics g){
if (check == true){
BufferedImage img = null;
try{
img = ImageIO.read(new File("C:/Users/kebrobst18/Downloads/Fitnessgram.png"));
}
catch (IOException e){
}
g.drawImage(img, 0, 0, this);
}
}
public void start(){
setLayout(new BorderLayout());
button=new JButton();
button.setPreferredSize(new Dimension(200, 100));
button.setText("Start/Stop");
button.addActionListener(this);
add(button, BorderLayout.SOUTH);
setSize(500,500);
setVisible(true);
audio = false;
}
public void actionPerformed(ActionEvent e){
check = true;
repaint();
try{
if (audio == false){
fitness.open();
fitness.start();
}
else if (audio == true){
fitness.stop();
audio = false;
}
}
catch (LineUnavailableException f){
}
catch(IllegalArgumentException f){
}
catch(NullPointerException f){
}
}
public static void main(String args[]){
aMeme x = new aMeme();
x.start();
}
}
你什么时候设置过
audio=true
?我肯定你不会每隔一行写一行代码,所以不要发布这样格式的代码。如果您希望我们阅读代码,然后使代码可读。类名以大写字符开头。您所需要做的就是查看JavaAPI来了解这个Java约定。不要使用静态变量。不要覆盖paint(),尤其是在框架上。ActionLIstener中不需要“repInt()”。在上一个问题中,您得到了简单的工作代码。你所需要做的就是根据指示剪辑当前状态的变量来启动/停止剪辑。你几乎忽略了气垫船上满是鳗鱼给你的最后一个问题的所有建议。他关于例外的观点特别重要。异常会告诉您何时出现错误、错误的类型,并且通常会有一条有用的消息,说明发生错误的原因。通过忽略所有异常,如果剪辑或文件有问题,您将永远无法发现,我们也无法帮助您。我个人就是不愿意帮助那些有空捕集区的人。就像开车不看路一样。