如何使按钮执行一次动作



我想要一个按钮发出声音,但只需点击一次。但点击后会不断播放。我如何让声音播放一次,然后在下一页再次播放?

代码如下:

Private void buttonMouseClicked
Audioinput audio =AudioStream.getAudioInputStream(this.get class().getResource ("/AppPackage/BH/chr.wav"));
Clip clip =AudioSystem.getClip();
clip.open(audio);
clip.start();

我只是想确保下次点击这个按钮时不会发生什么

您可以放置一个全局布尔变量并初始设置为false。当单击鼠标按钮时,在继续播放音频之前,首先检查变量是否为false。如果变量为真,则不要继续。如果该变量为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,这样当你点击按钮时,你可以再次播放音频

对于你只想操作一次的按钮,你可以在一次操作后使用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是一个mousellistener,它的方法我并不关心。这意味着禁用它是没有用的,我需要添加一个额外的变量来保存它已经被点击的事实。

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;
            }
        }
});

相关内容

  • 没有找到相关文章

最新更新