在java中计算jslider进度条
你好 我正在开发一个简单的java音频播放器,我需要使用jslider作为进度条,我在播放进度条时使用了它,在歌曲完成之前我使用了这段代码在java中计算jslider进度条,java,Java,你好 我正在开发一个简单的java音频播放器,我需要使用jslider作为进度条,我在播放进度条时使用了它,在歌曲完成之前我使用了这段代码 Timer time = new Timer(100, new ActionListener() { int percent = 0; @Override public void actionPerformed(ActionEvent e) {
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();
首先,我不会保留那样的
百分比计数器。我建议您根据开始时间戳和当前时间戳重新计算滑块值
如果滑块的最大值为100,并且持续时间
表示音频剪辑的持续时间(以毫秒为单位),则应该能够执行以下操作:
long elapsed = System.currentTimeMillis() - startTimeStamp;
double percent = elapsed / duration;
jSlider1.setValue((int)(100*percent));
假设您的滑块值在0到600之间,该值不应该是600*百分比
而且百分比不应该通过elapsedTime/duration
来计算,例如一首5分钟歌曲的第一分钟60/300
?我建议将滑块的最大值设置为与曲目的持续时间相等(以秒为单位),因为这样不仅可以简化计算(您所要做的就是将滑块的位置设置为当前持续时间,而不是计算百分比),但在读取和修改滑块位置时,您可以对时间位置进行细粒度控制。例如,一分钟长的轨迹将有一个带有60个槽口的滑块。您还可以避免舍入错误。为什么要使用JSlider
来模拟JProgressBar
?在进度栏中添加MouseListener
如果需要,用户可以很容易地重新定位曲目。嘿!我也在尝试创建媒体播放器