Wie kann ich den Sound stoppen?

Code46

Erfahrenes Mitglied
Juhuuu
mache gerade weiter mit meinem projekt.
Ich habe zwei buttons play und stop. Bei klick auf dem play button wird der sound einwandfrei abgespiel.Nun will ich aber auch das der sound durch klicken des stop buttons stopped.

Ich bekomme eine Fehlermeldung die ich nicht verstehe.

Hier mein Code
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

 
 public class sound extends JFrame
                   implements ActionListener
 {
	JButton playbtn = new JButton("Play");
	JButton stopbtn = new JButton("Stop");

     public static void main(String[] args)
     {
         sound jf = new sound();
     }
     
     public sound()
     {
         setLayout(new FlowLayout());
         setSize(600, 200);
         setTitle("Sound");
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		add(playbtn);
		add(stopbtn);
        stopbtn.addActionListener(this);
		playbtn.addActionListener(this);
        setVisible(true);

	
     }
 
     public void actionPerformed(ActionEvent e)
     {
           if (e.getSource() == playbtn)
         {
			 play(getCodeBase(), "gong1");
		 }
         
		  if (e.getSource() == stopbtn)
         {
			 stop(getCodeBase(), "gong1");
			 
		 }

		   }
		     private Object getCodeBase() {
        return null;
    }

   private void play(Object codeBase, String fileName) {
        try {
            Clip clip = AudioSystem.getClip();
            File file = new File(fileName + ".wav");
            AudioInputStream ais = AudioSystem.getAudioInputStream(file);
            clip.open(ais);
            clip.start();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
      }

private void stop(Object codeBase, String fileName) {
        try {
            Clip clip = AudioSystem.getClip();
            File file = new File(fileName + ".wav");
            AudioInputStream ais = AudioSystem.getAudioInputStream(file);
            clip.stop(ais);
            clip.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
      }


     }



Und hier ist meine Fehlermeldung

Code:
---------- Javac ----------
sound.java:73: stop() in javax.sound.sampled.DataLine cannot be applied to (javax.sound.sampled.AudioInputStream)
            clip.stop(ais);
                ^
1 error

Output completed (0 sec consumed) - Normal Termination
 
Hallo,

ich kenne mich zwar mit der Sound-API nicht aus, aber was ganz offensichtlich ist, dass die Methode Clip.stop() ein Objekt vom Typ javax.sound.sampled.DataLine als Parameter erwartet. Du übergibst ihr aber ein AudioInputStream, deswegen gibt es beim Kompilieren eine Fehlermeldung.

Schaue dir am besten ein paar Beispiele an, wie man die Sound-API richtig verwendet: Java sound API examples

Grüße
Vincent
 
Zurück