在java中计算jslider进度条
问题描述:
hello 我正在开发一个简单的java音频播放器,我需要使用jslider作为进度条,而我在播放进度条之前使用它完成了歌曲完成之前我使用此代码在java中计算jslider进度条
Timer time = new Timer(100, new ActionListener() {
int percent = 0;
@Override
public void actionPerformed(ActionEvent e) {
percent++;
if (percent>100)
percent = 0;
jSlider1.setValue((int)(100*(percent/600.0*duration)));
}
});
time.start();
答
首先,我不会保持percent
计数器这样。我建议您根据开始时间戳和重新计算滑块值,当前时间戳为。
如果滑块的最大值为100 duration
表示音频剪辑的持续时间(毫秒),你应该能够做到
long elapsed = System.currentTimeMillis() - startTimeStamp;
double percent = elapsed/duration;
jSlider1.setValue((int)(100*percent));
答
假设你的滑块值的范围从0到600,不应该是600*percent
?
而且不应该由百分比elapsedTime/duration
来计算,例如,一首5分钟歌曲的第一分钟为60/300
?
答
我建议让滑块的最大值等于轨道的持续时间(以秒为单位),因为它不仅使计算更容易(您只需将滑块的位置设置为当前的持续时间比计算出一个百分比),但是在读取和修改滑块位置时,您可以对时间位置进行细化控制。例如,一分钟长的轨道将有一个带有60个凹口的滑块。你也会避免舍入错误。
为什么使用'JSlider'来模拟'JProgressBar'?将“MouseListener”添加到进度条,用户可以根据需要轻松地重新定位轨道。 – 2011-05-06 15:08:53
嘿!我也试图创造媒体播放器 – Surej 2011-05-09 14:36:57