Witam,
Ostatnio zacząłem pisać program typu SoundBoard.
Program działa bez problemu, bo kliknięciu na przycisku w okienku dźwięk się odtwarza.
Niestety działa to tylko, gdy program jest uruchamiany przez eclipse.
Gdy program wyeksportuje do pliku wykonywalnego jar to pliki dźwiękowe umieszczają się w tym jar, ale program który uruchamiam z jar już nie widzi tych plików.
Klasa Sound
package testy;
import java.io.*;
import sun.audio.*;
public class Sound {
public Sound() {
}
public static AudioStream S1, S2, S3, S4;
public static void pliki() {
try {
InputStream ding = new FileInputStream("sounds/testy/ding.wav"); //ścieżka do pliku dźwiękowego
//InputStream blad = new FileInputStream("zasoby/zasoby/wykrzyknik.wav");
S1 = new AudioStream(ding);
//S2 = new AudioStream(blad);
} catch (FileNotFoundException e) {
System.out.println("not found file");
} catch (IOException error) {
System.out.println("error");
}
}
public void music(int i) { //funkcja do wybierania dźwięku. Narazie jest tylko jeden dźwięk
pliki();
if (i == 1)
AudioPlayer.player.start(S1); //odtwarzam wybrany dźwięk
if (i == 2)
AudioPlayer.player.start(S2);
if (i==3)
AudioPlayer.player.start(S3);
if(i==4)
AudioPlayer.player.start(S4);
}
}
Klasa z przyciskami. Testowo dodałem tylko jednego słuchacza do przycisku
package testy;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Panel1 extends JPanel implements ActionListener {
public static Sound xp = new Sound();
public static JButton Q = new JButton("Q");
public static JButton W = new JButton("W");
public static JButton E = new JButton("E");
public static JButton R = new JButton("R");
public static JButton T = new JButton("T");
public static JButton Y = new JButton("Y");
public static JButton U = new JButton("U");
public static JButton I = new JButton("I");
public static JButton O = new JButton("O");
public static JButton P = new JButton("P");
public static GridLayout uklad = new GridLayout(1, 10);
public Panel1() {
add(Q);
Q.addActionListener(this);
add(W);
add(E);
add(R);
add(T);
add(Y);
add(U);
add(I);
add(O);
add(P);
setLayout(uklad);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==Q) {
xp.music(1);
}
else {}
}
}
Klasa wyświetlająca okno
package testy;
import javax.swing.JFrame;
public class Frame extends JFrame {
public static Panel1 panelek = new Panel1();
public Frame() {
setSize(600, 100);
setTitle("Test");
setDefaultCloseOperation(EXIT_ON_CLOSE);
add(panelek);
}
}
Klasa Main
package testy;
public class Main {
public static void main(String[] args) throws Exception {
System.out.println("START");
Frame okienko = new Frame();
okienko.setVisible(true);
System.out.println("STOP");
}
}
A tutaj drzewo plików
- test.png (1 MB) - ściągnięć: 133