java - 为媒体播放器制作一个搜索栏。

标签 java swing jmf

我正在使用 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 的右上角看到该栏。将鼠标悬停在它上面会产生一个工具提示,显示该鼠标位置处的轨道时间。

Duke Box using progress bar for track postion

关于java - 为媒体播放器制作一个搜索栏。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12786346/

相关文章:

Java 在 JTextPane 上设置缩进大小

java - 如何在 ubuntu 上安装 Java Media Framework (JMF)

java - 如何在 Java 中播放 3gp 文件?

java - Android:创建一个圆形 TextView?

java - 无法在 java Web 服务中加载文件

java - 漂亮的 GUI 布局

java - 如何在swing中为视频制作叠加层

Java 调整双缓冲区大小

Java swing 页眉和页脚背景颜色

java - Java 的 Netty 和 GUI