Hallo
Wir müssen einen Audio Player programmieren der einen progress slider haben soll, der auch zum Spulen bewegt werden soll. Das funktioniert auch schon, nur verhält er sich irgendwie komisch. Wenn man spult und gleich loslässt springt er ziemlich willkürlich rum. Man muss ihn ziehen, dann kurz auf der ziel Stelle stehen lassen und dann erst loslassen damit es richtig geht. Weiß vielleicht wer woran das liegen könnte?
Wäre super
Hier die 2 klassen dazu:
Wir müssen einen Audio Player programmieren der einen progress slider haben soll, der auch zum Spulen bewegt werden soll. Das funktioniert auch schon, nur verhält er sich irgendwie komisch. Wenn man spult und gleich loslässt springt er ziemlich willkürlich rum. Man muss ihn ziehen, dann kurz auf der ziel Stelle stehen lassen und dann erst loslassen damit es richtig geht. Weiß vielleicht wer woran das liegen könnte?
Wäre super
Hier die 2 klassen dazu:
Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.media.*;
import javax.media.Player;
import java.io.*;
import java.net.*;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.beans.*;
import java.util.*;
import java.util.Timer;
@SuppressWarnings("restriction")
public class ProgressSlider extends JSlider implements ChangeListener, ActionListener{
protected Player player = null;
public void stateChanged(ChangeEvent e){
}
public void actionPerformed(ActionEvent e){
}
public ProgressSlider(Player playerinit){
this.setValue(0);
this.addChangeListener(this);
this.setSnapToTicks(false);
this.setPaintTicks(true);
this.setMajorTickSpacing(10);
player=playerinit;
setBackground(Color.orange);
}
};
Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.media.*;
import javax.media.Player;
import java.io.*;
import java.net.*;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.beans.*;
import java.util.*;
import java.util.Timer;
@SuppressWarnings("restriction")
public class TimeControll extends Thread{
private ProgressSlider pSlider;
private JLabel showTime;
protected Player player = null;
public TimeControll(ProgressSlider pSliderinit, Player playerinit2, JLabel showTime, JLabel showTitle){
this.pSlider = pSliderinit;
this.player = playerinit2;
this.showTime = showTime;
}
public void run(){
double temp = 0;
double min = 0;
double sec = 0;
while(true ){
try {
if( ! pSlider.getValueIsAdjusting()){
pSlider.setValue(((int) (100*(player.getMediaTime().getSeconds())/(player.getDuration().getSeconds()))));
}
if( pSlider.getValueIsAdjusting()){
temp=pSlider.getValue();
temp=((temp/100)*(player.getDuration().getSeconds()));
player.setMediaTime(new Time((temp)));
}
sec = player.getMediaTime().getSeconds() % 60;
min = (player.getMediaTime().getSeconds() - sec)/60;
if(min < 10){
if(sec < 10){
showTime.setText("0"+Double.toString(min).substring(0,1)+":0"+Double.toString(sec).substring(0,1));
}
else{
showTime.setText("0"+Double.toString(min).substring(0,1)+":"+Double.toString(sec).substring(0,2));
}
}
else
if(sec < 10){
showTime.setText(Double.toString(min).substring(0,2)+":0"+Double.toString(sec).substring(0,1));
}
else{
showTime.setText(Double.toString(min).substring(0,2)+":"+Double.toString(sec).substring(0,2));
}
sleep(200);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};