hallo!
ich weiß, dieses thema ist hier schon ein paar mal besprochen worden, doch auch nachdme ich all die threads gelesen habe konnte ich es noch nicht umsetzen.
programmiere einen audio player, der hat einen start-button (der nach dem drücken zu pause wird) und einen stop-button.
nun will ich den thread, der für die wiedergabe gestartet wird bei stop beenden und bei pause anhalten bis ich wieder start drücke...
nehme ich an stelle von t.interrupt, t.stop funktioniert es mehr oder weniger... es gibt zwar folgefehler, aber der thread wird beendet
ich weiß, dieses thema ist hier schon ein paar mal besprochen worden, doch auch nachdme ich all die threads gelesen habe konnte ich es noch nicht umsetzen.
programmiere einen audio player, der hat einen start-button (der nach dem drücken zu pause wird) und einen stop-button.
nun will ich den thread, der für die wiedergabe gestartet wird bei stop beenden und bei pause anhalten bis ich wieder start drücke...
nehme ich an stelle von t.interrupt, t.stop funktioniert es mehr oder weniger... es gibt zwar folgefehler, aber der thread wird beendet
Code:
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == btPlay) {
// es wird abgespielt
if (audioFile != null) {
if (play == true) {
t.start();
System.out.println("jetzt müsste die musik starten");
btPlay.setIcon(PauseIcon);
play = false;
} else {
// Pause...
if (play == false) {
try {
t.wait(1000);
System.out.println("alive:" + t.isAlive());
} catch (Exception x) {
}
System.out.println("jetzt müsste die musik anhalten");
btPlay.setIcon(StartIcon);
play = true;
}
}
if (source == btStop) {
// es wird gestoppt (Wiedergabe oder Aufnahme)
if (audioFile != null) {
stop();
}
}
}
private void stop() {
t.stop();
System.out.println("STOP");
btPlay.setIcon(StartIcon);
play = true;
}
class MyThread extends Thread {
public void run() {
while(!isInterrupted()){
play();
if (isInterrupted())
break;
System.out.println("Break");
try {
Thread.sleep(100);
}
catch(InterruptedException e){
interrupt();
}
}
}
}