# Ton abspielen



## unknown_member (7. Jan 2007)

Hi!
Wie kann man in Java einen Ton abspielen? Könnt ihr mir einen Codeschnipsel geben?

thx, unknown_member


----------



## dieta (7. Jan 2007)

Google spuckt z.B. das aus:
http://www.galileocomputing.de/openbook/javainsel5/javainsel19_007.htm#Rxx747java19007040007DB1F048100


----------



## SlaterB (7. Jan 2007)

und ich dachte immer Lehrbücher wären zum Lernen da,
du läßt lieber andere suchen? 

http://www.galileocomputing.de/openbook/javainsel6/
schau mal ob du selbstständig das passende Kapitel findest..
(edit: mist, dieta sagst schon  )

falls du dort und bei google nicht weiterkommst:
gib genauere Infos, ein Ton? PC-Speaker, MP3, ..?


----------



## Illuvatar (7. Jan 2007)

java.awt.Toolkit oder
javax.sound.* oder
java.applet.* oder
javax.media.* oder ...
je nachdem was du brauchst.


----------



## unknown_member (7. Jan 2007)

Aber wieso funktioniert das nicht:


```
schuss = new AudioClip( "GunShot.wav" );
		 schuss.play();
```



```
java.applet.AudioClip is abstract; cannot be instantiated
 schuss = new AudioClip( "GunShot.wav ");
```


----------



## SlaterB (7. Jan 2007)

oje, das ist ja peinlich,
auf der von dieta gelinkten Seite stehen die 3 Zeilen RICHTIGEN Code fein übersichtlich drin 

warum?: weil das nur ein Interface/ abstrakte Klasse ist, die konkrete Implementierung hängt von vielen internen Details ab, die den User nicht interessieren sollten


----------



## unknown_member (7. Jan 2007)

ABer selbst die Zeilen Code im E-Net klappen nicht! ???:L

Könnt ihr mir bitte ein KSKB mit Sounds geben, würde mir sehr helfen... [duke]Bitte![/duke]


----------



## SlaterB (7. Jan 2007)

was ist ein E-Net? manchmal machts hier echt keinen Spass..


```
import java.applet.Applet;
import java.applet.AudioClip;
import java.io.File;

public class Test {
	public static void main(String[] args) throws Exception {
		File f = new File("schreibmaschine.wav");
		System.out.println("Datei da?: " + f.exists()+", "+f.getAbsolutePath());
		AudioClip sound = Applet.newAudioClip(f.toURL());
		sound.play();
		Thread.sleep(5000); // 5 Sekunden warten, dann Abbruch
		System.exit(0);
	}
}
```


----------



## unknown_member (7. Jan 2007)

Also das "E-Net" (sprich:I-Net) bedeutet Internet. Vielleicht sag das auch nur ich so, kA.  :wink:


----------



## Wildcard (7. Jan 2007)

unknown_member hat gesagt.:
			
		

> Also das "E-Net" (sprich:I-Net) bedeutet Internet. Vielleicht sag das auch nur ich so, kA.  :wink:


ROFL


----------



## unknown_member (7. Jan 2007)

Das is echt komisch! Ich hab jetzt alles genauso übernommen wie SlaterB es hatte, aber es funzt net!!! KA warum! Hier der gesamte Code:



```
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
import java.applet.Applet;
import java.applet.AudioClip;
import java.io.File;


public class Point extends Frame
 implements ActionListener, WindowListener, MouseListener {
 
 
 private JPanel                       points1;
 private JButton                       point1;
 private ImageIcon                 pointIcon1;
 private ImageIcon              pointIcon1Sel;
 private ImageIcon                       shot;
 private Color                    hintergrund;
 private int                               mx;
 private int                               my;
 private JButton                        shot2;
 private AudioClip                     schuss;
 
 
 public static void main (String[] args) throws Exception {
 
 
    Point pointing = new Point();
	pointing.setTitle("POINT");
	pointing.setSize(700,700);
	pointing.setBackground(Color.darkGray);
	pointing.setCursor(CROSSHAIR_CURSOR);
	pointing.setVisible(true);
   }
   
   
    Point() {
    makeGui();
    addWindowListener(this);
    }

	
	
	 public void makeGui() {
	 
	 
	 points1 = new JPanel();
	 points1.setLayout(null);
	 points1.setBackground(Color.lightGray);
	 points1.addMouseListener(this);
	 
	 
	 pointIcon1    = new ImageIcon( "PointImage1.gif" );
	 pointIcon1Sel = new ImageIcon( "PointImage1Selected.gif" );
	 shot          = new ImageIcon( "Shot.gif" );
	 
	 
	point1 = new JButton("");
	points1.add(BorderLayout.CENTER,point1);
	point1.addActionListener(this);
	points1.add(point1);
	point1.setBounds(164,433,50,50);
	point1.setBackground(Color.lightGray);
	add(BorderLayout.CENTER,points1);
	point1.setIcon(pointIcon1);
	point1.setBorder(null);
	point1.addMouseListener(this);
	point1.setEnabled(true);
	
	
	
	shot2 = new JButton("");
	points1.add(shot2);
	shot2.setSize(10,10);
	shot2.setBackground(Color.lightGray);
	shot2.setIcon(shot);
	shot2.setBorder(null);
	shot2.addMouseListener(this);
	shot2.setVisible(false);
    }
	

	 
    
	 public void windowClosing(WindowEvent e) {
	   System.exit(0);
	   }
	 
	 public void actionPerformed(ActionEvent event) { }
	 
	 
	 public void mouseEntered(MouseEvent ev) {
	 
	 if (ev.getSource() == point1) { 
	  point1.setIcon(pointIcon1Sel);
      } 
	 }
	 
	 public void mouseExited(MouseEvent ev) {
	 
	 if (ev.getSource() == point1) { 
	  point1.setIcon(pointIcon1);
      } 
	 }
	 
	 public void mouseClicked(MouseEvent ev) {
	 
	 if (ev.getSource() == points1) { 
	  	 mx = ev.getX();
		 my = ev.getY();
		 shot2.setBounds(mx,my,10,10);
		 shot2.setVisible(true);
		 File f = new File("schreibmaschine.wav");
         System.out.println("Datei da?: " + f.exists()+", "+f.getAbsolutePath());
         AudioClip sound = Applet.newAudioClip(f.toURL());
         sound.play();
      } 
	 }
	 
	 
	 
     public void windowOpened(WindowEvent e) { }
     public void windowIconified(WindowEvent e) { }
	 public void windowClosed(WindowEvent e) { }
	 public void windowActivated(WindowEvent e) { }
	 public void windowDeiconified(WindowEvent e) { }
	 public void windowDeactivated(WindowEvent e) { }
	 public void mousePressed(MouseEvent ev) { }
	 public void mouseReleased(MouseEvent ev) { }
	 
	 }
```


----------



## SlaterB (7. Jan 2007)

deine Datei heißt auch "schreibmaschine.wav"?
und nicht "GunShot.wav"?
wenn's mal nicht daran lag


----------



## Ark (7. Jan 2007)

SlaterB hat gesagt.:
			
		

> deine Datei heißt auch "schreibmaschine.wav"?
> und nicht "GunShot.wav"?
> wenn's mal nicht daran lag


*HALBTOTROFL*

… Sorry, das musste mal raus. :'-D


----------



## Wildcard (7. Jan 2007)

@unknown member
you made my day  :lol:


----------



## unknown_member (8. Jan 2007)

@Wildcard: Bitte, bitte!  :wink: 




			
				SlaterB hat gesagt.:
			
		

> deine Datei heißt auch "schreibmaschine.wav"?
> und nicht "GunShot.wav"?
> wenn's mal nicht daran lag



Wenns das wäre! So dumm bin ich auch wieder nicht! :wink: Wieso funzt das nicht!


----------



## RoSiebzig (8. Jan 2007)

köstlich .. haha .. schreibmaschine .. << alles genauso übernommen .. >> .. herrlich!
.. wiiiiiieh heißt meine datei?? ... woooouuuuuuuuuahhhhhhhhhh *bodenliegkringelbauchschmerzt*


----------



## unknown_member (8. Jan 2007)

Voll witzig! Alles zuspamen! :wink: 

Es wird immer gemeldet, dass die Methoden "unreported" sind... :bahnhof:


----------



## RoSiebzig (8. Jan 2007)

vielleich' hat's was mit 'ner Verwechslung von
java.io.File.toURI()     java.io.File.toURL()      und     java.net.URI.toURL()   (die wohl weniger) 
zu tun .. bzw abstractPath und AbsolutePath
.. da müßte ggf  toURI()  (mit "file:"?) geändert oder    import java.net.URI    (wohl weniger) importiert werden.
hab' aber keine Ahnung, eigentlich  :shock: 
oder mal die zeilenangabe der errormeldung angucken


----------



## unknown_member (8. Jan 2007)

RoSiebzig hat gesagt.:
			
		

> vielleich' hat's was mit 'ner Verwechslung von
> java.io.File.toURI()     java.io.File.toURL()      und     java.net.URI.toURL()   (die wohl weniger)
> zu tun .. bzw abstractPath und AbsolutePath
> .. da müßte ggf  toURI()  (mit "file:"?) geändert oder    import java.net.URI    (wohl weniger) importiert werden.
> ...





			
				RoSiebzig hat gesagt.:
			
		

> hab' aber keine Ahnung, eigentlich  :shock:




Tja, wenn man keine Ahnung hat, sollte man ruhig sein... :bae:


----------



## L-ectron-X (8. Jan 2007)

```
AudioClip clip = Applet.newAudioClip(new File("GunShot.wav").toURL());
clip.play();
```
In diesem Fall liegt deine Wavedatei im Verzeichnis der Klasse.


----------



## unknown_member (8. Jan 2007)

Richtig.  :wink:


----------



## SlaterB (8. Jan 2007)

ich hatte übrigens 
'Das is echt komisch! Ich hab jetzt alles genauso übernommen wie SlaterB es hatte, aber es funzt!!!' 
gelesen, und deshalb so einen Scherz gemacht,
das es 'net funzt' wäre doch das normale und keine drei Ausrufezeichen wert..

---------

ist der Vorschlag von L-ectron-X jetzt was anderes?
funktionierts damit?


----------



## Cha0z (3. Mrz 2007)

ich benutze Frame, genauergesagt JFrame
aber klappt net
also in eienr Konsolenklassen ding schon klar, aber im Frame net
Fehler:

```
D:\Java\ZoeStyle\snake\snake.java:49: unreported exception java.net.MalformedURLException; must be caught or declared to be thrown

      AudioClip clip = Applet.newAudioClip(new File("senf.wav").toURL());
```

mit pfeil auf die toURL funktion...

wie fixen =) ?


----------



## Marco13 (3. Mrz 2007)

Cha0z hat gesagt.:
			
		

> ...
> D:\Java\ZoeStyle\snake\snake.java:49: unreported exception java.net.MalformedURLException; must be caught or declared to be thrown
> ...
> wie fixen =) ?


So, wie es dasteht. Und wenn du nicht weißt, was das zu bedueten hat, gebe ich dir (entgegen meiner Gewohnheit) den Rat, erstmal die Grundlagen zu lernen (die vielzitierte Javainsel, zum Bleistift).

Wenn du keinen Wert darauf legst, was zu lernen oder was gutes zu machen: Schreib' einfach

```
AudioClip clip = null;
try
{
   clip = Applet.newAudioClip(new File("senf.wav").toURL()); 
} 
catch (Exception e)
{
   /* Ignorieren, wird schon nicht so schlimm sein... */
}
```
dann geht's :roll:


----------

