我正在使用 JMF 制作一个媒体播放器,我想使用我自己的控制组件 谁能帮我为媒体播放器制作一个搜索栏,以便它可以根据 slider 位置播放歌曲。
给我一些逻辑,之后我可以弄清楚编码部分
if(player!=null){
long durationNanoseconds =
(player.getDuration().getNanoseconds());
durationbar.setMaximum((int) player.getDuration().getSeconds());
int duration=(int) player.getDuration().getSeconds();
int percent = durationbar.getValue();
long t = (durationNanoseconds / duration) * percent;
Time newTime = new Time(t);
player.stop();
player.setMediaTime(newTime);
player.start();
mousedrag=true;
这是代码。现在我怎样才能让 slider 随着歌曲一起移动呢? 当我拖动/单击 slider 时, slider 会起作用,但它不会随着歌曲移动。
最佳答案
为此使用 slider 的问题在于,当以编程方式移动 slider 位置时,它会触发事件。当在 slider 上触发事件时,它通常表示应用程序。必须做一些事情,例如移动歌曲位置。效果是一个永无止境的循环。可能有一种方法可以通过设置标志并忽略一些事件来解决这个问题,但我决定采用不同的方法。
相反,我使用 JProgressBar
来指示轨道中的位置,并使用 MouseListener
来检测用户何时单击单独的位置。使用 Swing Timer
更新进度条,它每 50-200 毫秒检查一次轨道位置。当检测到 MouseEvent
时,重新定位轨道。
可以在该 GUI 的右上角看到该栏。将鼠标悬停在它上面会产生一个工具提示,显示该鼠标位置处的轨道时间。
关于java - 为媒体播放器制作一个搜索栏。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12786346/