繁体   English   中英

JavaFX ChangeListener持续时间问题

[英]JavaFX ChangeListener duration issue

我是Java的新手,仔细研究了文档之后,发现自己陷入了困境。

我有一个使用JavaFX MediaPlayer播放wav文件的小程序。 我的播放器对象有一个currentTimeProperty,我想在播放过程中以分钟:秒显示此属性的输出。

因此,在函数的结尾处有这个文件,该文件可以放入我的wav文件并初始化播放器:

mediaPlayer = new MediaPlayer(wav);
mediaPlayer.currentTimeProperty().addListener(new TimeListener());

然后我有:

public class TimeListener implements ChangeListener {
    public void changed(ObservableValue o, Object oldVal, Object newVal) {

    //Update time display with MediaPlayer's current time:
    currTimeLabel.setText(newVal.toString());
    }
}

这可行。 在播放wav的过程中,我的currTimeLabel以当前时间更新,以毫秒为单位。 问题是,我希望这次以分钟:秒为单位。

变量newVal被列为“ Duration”类型, Duration类具有toMinutes()toSeconds() 类的方法,但是我无法将它们应用于newVal ,我也不明白为什么。

我可以创建一个新的Duration对象:

Duration testDuration = Duration.millis(100000);

然后使用以下方法:

double secondsDuration = testDuration.toSeconds();
// 100.0

因此,如果testDurationnewVal都是持续时间对象,为什么我不能将这些方法应用于newval

总的来说,我走对了吗? 我知道必须有一些字符串格式才能使输出正确,但是在我看来,首先我需要以非字符串格式从newVal获取值。

提前致谢。

这是因为您的newVal是一个Object而不是Duration。 您可以像((Duration)newVal).一样对其进行铸造和取消引用((Duration)newVal). 另一个更好的方法是使您的方法ChangeListener<Duration>

TimeListener = new ChangeListener<Duration>() {
      @Override public void changed(ObservableValue<? extends Duration> o, Duration oldVal, Duration newVal) {
     //now newVal is of Duration class
      }
    };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM