Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe eine Klasse Player mit einem Menü, in der befindet sich die innere Klasse
"private class MenueAktion00 implements ActionListener"
Code:
private class MenueAktion00 implements ActionListener{
public void actionPerformed(ActionEvent e){
if (fileChooser.showOpenDialog(Player.this) == JFileChooser.APPROVE_OPTION){
File soundFile = fileChooser.getSelectedFile();
// soundfile - soll an "public class PlayerThread implements Runnable"
// übergeben werden
Thread t1 = new Thread(new PlayerThread());
t1.start();
}
}
}
Dann habe ich die zweite Klasse, die eine wav-Datei abspielt
Code:
import java.io.File;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.SourceDataLine;
import javax.swing.JOptionPane;
public class PlayerThread implements Runnable{
public void run(){
File file = new File("Apo.wav");
play(file);
}
public void play(File file){
// Sound abspiel Programm
}
}
}
Wie man sieht spielt die Klasse, "public class PlayerThread implements Runnable" nur "Apo.wav" ab.
Ich möchte aber das sie aus "private class MenueAktion00 implements ActionListener" , denn "soundfile - fileChooser" übernimmt, damit ich nicht nur die eine festgelegte "Apo.wav" abspielen kann, sondern eine beliebige die ich mir frei aussuchen kann.
private class MenueAktion00 implements ActionListener{
public void actionPerformed(ActionEvent e){
if (fileChooser.showOpenDialog(Player.this) == JFileChooser.APPROVE_OPTION){
File soundFile = fileChooser.getSelectedFile();
// soundfile - soll an "public class PlayerThread implements Runnable"
// übergeben werden
String filename = // kommt von irgendwo her
PlayerThread pt = new PlayerThread(filename);
Thread t1 = new Thread(pt);
t1.start();
}
}
}
Code:
public class PlayerThread implements Runnable{
private String filename;
public PlayerThread(String filename) {
this.filename = filename;
}
public void run(){
File file = new File(filename);
play(file);
}
public void play(File file){
// Sound abspiel Programm
}
}
}
edit: oder direkt das File im Konstruktor übergeben wenn du File soundFile schon hast
private class MenueAktion00 implements ActionListener{
public void actionPerformed(ActionEvent e){
if (fileChooser.showOpenDialog(Player.this) == JFileChooser.APPROVE_OPTION){
File soundFile = fileChooser.getSelectedFile();
// soundfile - soll an "public class PlayerThread implements Runnable"
// übergeben werden
PlayerThread pt = new PlayerThread(soundFile);
Thread t1 = new Thread(pt);
t1.start();
}
}
}
Code:
public class PlayerThread implements Runnable{
private File file;
public PlayerThread(File file) {
this.file= file;
}
public void run(){
play(this.file); // bzw. gar keinen Parameter übergeben
// und play greift selber auf this.file zu
}
public void play(File file){
// Sound abspiel Programm
}
}
}