在java中计算jslider进度条

在java中计算jslider进度条,java,Java,你好 我正在开发一个简单的java音频播放器,我需要使用jslider作为进度条,我在播放进度条时使用了它,在歌曲完成之前我使用了这段代码 Timer time = new Timer(100, new ActionListener() { int percent = 0; @Override public void actionPerformed(ActionEvent e) {

你好 我正在开发一个简单的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();

首先,我不会保留那样的
百分比
计数器。我建议您根据开始时间戳和当前时间戳重新计算滑块值

如果滑块的最大值为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
如果需要,用户可以很容易地重新定位曲目。嘿!我也在尝试创建媒体播放器