我想要一个按钮发出声音,但只需点击一下。但点击时会一次又一次地播放。如何制作声音播放,然后在下一页再次播放。
这是代码
Private void buttonMouseClicked
Audioinput audio =AudioStream.getAudioInputStream(this.get class().getResource ("/AppPackage/BH/chr.wav"));
Clip clip =AudioSystem.getClip();
clip.open(audio);
clip.start();
我只是想确保在点击下一个特定按钮时不会发生。
答案 0 :(得分:0)
您可以放置一个全局布尔变量,并将其初始设置为false。单击鼠标按钮时,首先检查变量是否为false,然后再继续播放音频。如果变量为true,则不要继续。如果变量为false,则可以将其设置为true,然后继续执行代码以开始播放音频。
boolean isPlaying = false;
private void buttonMouseClicked() {
if (isPlaying) return;
isPlaying = true;
AudioInputStream audio;
try {
audio = AudioSystem.getAudioInputStream(getClass().getResource("/AppPackage/BH/chr.wav"));
Clip clip;
clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
} catch (UnsupportedAudioFileException ex) {
ex.printStackTrace();
} catch (LineUnavailableException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
也许你的程序的某些部分有一个代码来检测音频是否已经完成播放,你可以将变量设置为false,这样你就可以在单击按钮时再次播放音频。
答案 1 :(得分:0)
对于您只想表演一次的按钮,您可以在一次操作后使用setEnabled(false):
JButton myButton = new JButton("Only works once");
myButton.addActionListener(e -> {
// Code for thing i only do once.
// ...
myButton.setEnabled(false);
});
对于JLabel,我必须使用MouseListener而不是ActionListener。 MouseAdapter是一个MouseListener,其方法我并不关心存根。这意味着禁用它不会有帮助,我需要添加一个额外的变量来保存它已被点击的事实。
JLabel myLabel = new JLabel("label you can click on once");
myLabel.addMouseListener(new MouseAdapter() {
boolean alreadyclicked = false;
@Override
public void mouseClicked(MouseEvent e) {
if(!alreadyclicked) {
// Code for doing stuff I only want to do once.
alreadyclicked = true;
}
}
});