简单:Java如何使用;“正在运行”;在音频剪辑上?

简单:Java如何使用;“正在运行”;在音频剪辑上?,java,eclipse,audio,error-handling,clip,Java,Eclipse,Audio,Error Handling,Clip,在java中,我需要检查音频剪辑是否正在运行,但当我尝试以下操作时: if(clip1.isRunning()){ } Eclipse给我的错误是: “AudioClip类型的方法isRunning()未定义。” 在音频剪辑上使用isRunning()是否需要添加一些内容?还是我做错了什么 由于它是一个很长的程序,这里只是我的导入和我初始化的音频剪辑和我使用它的部分: import java.applet.Applet; import java.applet.AudioClip; impor

在java中,我需要检查音频剪辑是否正在运行,但当我尝试以下操作时:

if(clip1.isRunning()){

}
Eclipse给我的错误是:

“AudioClip类型的方法isRunning()未定义。”

在音频剪辑上使用isRunning()是否需要添加一些内容?还是我做错了什么

由于它是一个很长的程序,这里只是我的导入和我初始化的音频剪辑和我使用它的部分:

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
import javax.sound.sampled.Clip;
import javax.swing.Timer;

AudioClip clip1;

public void mousePressed(MouseEvent me) {
    if (xPos > 0 && xPos < 0+64 && yPos >0 &&  
            yPos < 0+64){
        if(soundMuted == false){
            soundMuted = true;
            clip1.stop();
        }
        else{
            if (clip1.isRunning()){

            }
            else{
                soundMuted = false;
                clip1.play();
            }
        }

    }
}

java.applet.AudioClip
不从继承自
javax.sound.sampled.Clip
的任何类扩展,因此,它没有
isRunning
方法

要使用
javax.sound.sampled.Clip
,您必须使用、for和

本例中的音频剪辑预计将嵌入Jar文件中(本例中的
sounds
包中,但您可以随时更改到需要的位置)

导入java.awt.gridbag约束;
导入java.awt.GridBagLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.io.IOException;
导入java.io.InputStream;
导入javax.sound.sampled.AudioInputStream;
导入javax.sound.sampled.AudioSystem;
导入javax.sound.sampled.Clip;
导入javax.sound.sampled.LineEvent;
导入javax.sound.sampled.LineListener;
导入javax.sound.sampled.LineUnavailableException;
导入javax.sound.sampled.unsupportDaudioFileException;
导入javax.swing.JApplet;
导入javax.swing.JButton;
导入javax.swing.JLabel;
导入javax.swing.Timer;
公共类测试扩展了JApplet{
私人剪辑;
私人JButton btnPlay;
私人标签;
@凌驾
公共void init(){
super.init();
}
@凌驾
公开作废开始(){
super.start();
setLayout(新的GridBagLayout());
GridBagConstraints gbc=新的GridBagConstraints();
gbc.gridwidth=GridBagConstraints.rements;
btnPlay=新的JButton(“带来噪音”);
标签=新的JLabel(“___;”);
添加(btnPlay,gbc);
添加(标签,gbc);
btnPlay.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
play();
}
});
计时器计时器=新计时器(250,新ActionListener(){
专用整数计数器=0;
@凌驾
已执行的公共无效操作(操作事件e){
if(clip==null | |!clip.isRunning()){
label.setText(“\uuuuuuuuuu”);
}否则{
StringBuilder sb=新的StringBuilder(“”);
for(int index=0;index10){
计数器=0;
}
}
}
});
timer.setInitialDelay(0);
timer.start();
}
受保护的无效播放(){
试试看(InputStream是=getClass().getResourceAsStream(“/sounds/Maid with the Flashen Hair.wav”)){
try(AudioInputStream AudioInputStream=AudioSystem.getAudioInputStream(is)){
clip=AudioSystem.getClip();
clip.addLineListener(新的LineListener(){
@凌驾
公共作废更新(LineEvent事件){
System.out.println(event.getFramePosition());
if(event.getType().equals(LineEvent.Type.STOP)){
btnPlay.setEnabled(真);
}
}
});
clip.open(音频输入流);
clip.start();
btnPlay.setEnabled(false);
}捕获(不支持DaudioFileException | LineUnavailableException ex){
例如printStackTrace();
}
}捕获(IOEXP异常){
exp.printStackTrace();
}
}
@凌驾
公共停车场(){
super.stop();
if(clip!=null){
clip.stop();
}
}
}

基本上,当播放时,这将动画化<代码> jLabor <代码>系列,如果<代码> ./COD>,当它不再播放时,它将只是一个<代码> > <代码>空白行

您是否导入了代码> javax?声音。采样。剪辑< /代码>?考虑提供一个演示您的问题的A。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应可以共享少量代码?是的,我刚刚导入了它,但仍然得到相同的错误。
java.applet.AudioClip
不扩展自继承自
javax.sound.sampled.Clip
的任何类,因此,它没有一个
isRunning
方法,你能给我一个简短的例子,告诉我如何更改它吗?因为我还是有点迷茫。什么,两个链接的例子和链接的教程是不够的?我只是需要帮助我如何让歌曲在“剪辑”中播放。歌曲名为“Song1”,它位于同一文件夹中。。我该怎么做呢?
getClass().getResource(“Song1”)
(但它不应该有扩展名)对不起,我对java有点陌生,所以我知道的不多。。你能再解释一下你的意思吗。
Description Resource    Path    Location    Type
The method isRunning() is undefined for the type AudioClip  HomeScreen.java                
/AlexVega2/src  line 421    Java Problem
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineEvent;
import javax.sound.sampled.LineListener;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.Timer;

public class Test extends JApplet {

    private Clip clip;
    private JButton btnPlay;
    private JLabel label;

    @Override
    public void init() {
        super.init();
    }

    @Override
    public void start() {
        super.start();
        setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;

        btnPlay = new JButton("Bring the noise");
        label = new JLabel("___");

        add(btnPlay, gbc);
        add(label, gbc);

        btnPlay.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                play();
            }
        });

        Timer timer = new Timer(250, new ActionListener() {
            private int counter = 0;
            @Override
            public void actionPerformed(ActionEvent e) {
                if (clip == null || !clip.isRunning()) {
                    label.setText("___");
                } else {
                    StringBuilder sb = new StringBuilder("          ");
                    for (int index = 0; index < counter; index++) {
                        sb.setCharAt(index, '.');
                    }
                    label.setText(sb.toString());
                    counter++;
                    if (counter > 10) {
                        counter = 0;
                    }
                }
            }
        });
        timer.setInitialDelay(0);
        timer.start();
    }

    protected void play() {

        try (InputStream is = getClass().getResourceAsStream("/sounds/Maid with the Flaxen Hair.wav")) {
            try (AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(is)) {
                clip = AudioSystem.getClip();
                clip.addLineListener(new LineListener() {
                    @Override
                    public void update(LineEvent event) {
                        System.out.println(event.getFramePosition());
                        if (event.getType().equals(LineEvent.Type.STOP)) {
                            btnPlay.setEnabled(true);
                        }
                    }
                });
                clip.open(audioInputStream);
                clip.start();
                btnPlay.setEnabled(false);
            } catch (UnsupportedAudioFileException | LineUnavailableException ex) {
                ex.printStackTrace();
            }
        } catch (IOException exp) {
            exp.printStackTrace();
        }

    }

    @Override
    public void stop() {
        super.stop();
        if (clip != null) {
            clip.stop();
        }
    }

}