您好 我正在开发一个简单的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();
答案 0 :(得分:3)
首先,我不会保留这样的percent
计数器。我建议您根据开始时间戳和当前时间戳重新计算滑块值。
如果滑块的最大值为100而duration
表示音频剪辑的持续时间(以毫秒为单位),则应该可以
long elapsed = System.currentTimeMillis() - startTimeStamp;
double percent = elapsed / duration;
jSlider1.setValue((int)(100*percent));
答案 1 :(得分:1)
我建议将滑块的最大值设置为等于轨道的持续时间(以秒为单位),因为它不仅可以使计算更容易(所有你需要做的就是将滑块的位置设置为当前持续时间而不是算出一个百分比),但是在读取和修改滑块的位置时,你会对时间位置进行细粒度的控制。例如,一分钟长的轨道将具有60个凹口的滑块。你也可以避免舍入错误。
答案 2 :(得分:0)
假设您的滑块值介于0到600之间,那么值不应为600*percent
?
不应该按elapsedTime/duration
计算百分比,例如5分钟歌曲的第一分钟60/300
?