Suonare con giava
Ci sto lavorando
Oggetto: Modelli da riutilizzare
Contenuti: |
1 |
 |
HTML.IT |
2 |

|
|
3 |
 |
|
4 |
 |
|
Se ci si limita ai file wav si può usare la libreria standard
3 import javax.sound.sampled.AudioInputStream;
4 import javax.sound.sampled.AudioSystem;
5 import javax.sound.sampled.Clip;
6 import javax.sound.sampled.UnsupportedAudioFileException;
7 import javax.sound.sampled.LineUnavailableException;
8 import java.io.IOException;
9 import java.net.*;
10 import java.awt.Color;
11 import javax.swing.*;
...
17 Clip clip,clip1;
18 JButton jb1;
...
33 jb1 = new JButton();
34 jb1.setText("On");
35 jb1.setBounds(10,10, 100, 40);
36 jb1.addActionListener(new java.awt.event.ActionListener() {
37 public void actionPerformed(java.awt.event.ActionEvent evt) {
38 creaWav("/sound/ClickOn.wav");
39 clip1=clip;
40 clip1.start();
41 }
42 });
43 add(jb1);
...
57 private void creaWav(String pat){
58
59 try{
60 URL souURL = getClass().getResource(pat);
61 AudioInputStream audioIn = AudioSystem.getAudioInputStream(souURL);
62 clip = AudioSystem.getClip();
63 clip.open(audioIn);
64
65 } catch(Exception ex) {
66 System.err.println(ex.getMessage());
67 }
69
70
71
72
73
74
75
76
77
78 } |
Solo due particolarità:
I comandi devono essere assolutamente compresi in un bloco try-catch. Infatti queste classi possono scatenate le eccezioni descitte nella paret commentata. Ma visto che funziona lostesso ho preferito usare un catch piu generico ma più sintetico.
Se si vuole tenere il codice in un metodo (creaWav nel nostro caso) purtroppo bisogna utilizzare un'oggetto clip dichiarato esternamente. Se come avevo fatto precedentemente avessi usato un return a clip mi avrebbe dato errore non ho capito perchè.
20 private Clip creaWav(String pat){
21 Clip clip;
22 try{
23 URL souURL = getClass().getResource(pat);
24 AudioInputStream audioIn = AudioSystem.getAudioInputStream(souURL);
25 clip = AudioSystem.getClip();
26 clip.open(audioIn);
27 } catch(Exception ex) {
28 System.err.println(ex.getMessage());
29 }
30 return(clip);
31 }
32 } |
Errore: variabile clip potrebbe non essere stta inizializzata!? Se si prova a inizializzarla così: Clip clip = new Clip(); da errore dicendo che essendo Clip uba classe astratta nonpuò essere inizializzata.
|