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 bin grade dabei ein kleines Jukebox Applet für meine HP zu schreiben! Bisher habe ich aber nur eine Auswahlliste und einen Stop Knopf gemacht. Wie kann ich noch einen Pause-Knopf machen und einen Schiebregler für Leiser bzw Lauter, welche Befehle brauch ich da?
Ich wünsche dir schon mal viel Spass! Bei dem was ich hier fabriziert habe war das alles recht schwierig. Also nicht unbedingt die Buttons selber, sondern eher das Zusammenspiel von Play, Pause, Previous, Next und Stop. Ich fürchte sogar, das ist immer noch nicht so ganz korrekt.
Die Musikstücke laufen im eigenen Thread. Dieser hat eine while(!stopped)-Schleife und innerhalb dieser wird per if(!paused) abgefragt, ob gerade abgespielt oder pausiert ist.
Mit den Buttons setzt oder löscht man nun die booleanschen Werte stopped und paused. Wichtig ist, das der Thread selbst nach einem Stop() noch weiterlaufen muß. D.H. das gesammte muß nocheinmal in eine while(!isInterrupted())-Schleife. Z.B. etwa so:
Code:
public class panel
extends Applet
implements Runnable, ActionListener
{
private Thread t;
private boolean stopped = true, paused = true;
public void Start()
{
paused = stopped = false;
t = new Thread(this);
t.start();
}
public void Stop()
{
stopped = paused = true;
t = null;
}
public void Pause()
{
paused = !paused;
}
public void run()
{
while(!t.isInterrupted()) {
while(!stopped) {
if (!paused) {
// Code zum Abspielen des Stückes. Z.B. nächster Frame des Audio-Streams.
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Stop();
}
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Stop();
}
}
}
public void actionPerformed(ActionEvent ae)
{
String command = ae.getActionCommand();
if(command.equalsIgnoreCase("play") Start();
else if(command.equalsIgnoreCase("stop") Stop();
else if(command.equalsIgnoreCase("pause") Pause();
}
public void init()
{
setLayout(new FlowLayout());
Button play = new Button("Play");
Button stop = new Button("Stop");
Button pause = new Button("Pause");
play.addActionListener(this);
stop.addActionListener(this);
pause.addActionListener(this);
add(play);
add(stop);
add(pause);
}
}
Die Volume-Buttons können öfters hintereinander gedrückt oder gedrückt gehalten werden. Im ersten Fall wird die Lautstärke Schrittweise geregelt während im 2. Fall nach einer Sekunde Verzögerung die Lautstärke stetig geregelt wird. Das ist aber nicht sehr einfach. Für den 1. Fall lassen sich entsprechende Buttons aber auch wie oben beschrieben (Start(), Stop(), usw...) implementieren.