Jukebox

Status
Nicht offen für weitere Antworten.

Heiland

Bekanntes Mitglied
Hi!

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?

thx
 

DesertFox

Bekanntes Mitglied
Den Lautstärkeregler könntest du mit einer ScrollBar machen und den Pauseknopf wie dein Stop Knopf mit einem normalen Button
 

Heiland

Bekanntes Mitglied
Das weiß ich ;-) aber ich bräuchte Infos, wie ich eine Pause programmiere usw. Ich kenne da die Lib nicht!

THX
 
S

Spacerat

Gast
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.
 

Heiland

Bekanntes Mitglied
vielen Dank für den code! Ich werde mir das mal zu Gemüte führen, sobald ich mit meinem derzeitigen Projekt abgeschlossen habe! 8)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Jukebox mit Java [Html Applet] Tools - Maven, Gradle, Ant & mehr 11

Ähnliche Java Themen

Neue Themen


Oben