String Javafx时间线侦听器:ObservalEvalue为双精度

String Javafx时间线侦听器:ObservalEvalue为双精度,string,javafx,double,listener,observable,String,Javafx,Double,Listener,Observable,我正在尝试将一个更改侦听器添加到JavaFX时间线的currentTimeProperty中。我希望获得当前时间的值,并将其表示为双精度,以便对该值执行操作等 目前,它看起来是这样的: public void addAnimationListener() { animation.getTimeline().currentTimeProperty().addListener(new ChangeListener(){ @Override public voi

我正在尝试将一个更改侦听器添加到JavaFX
时间线的
currentTimeProperty
中。我希望获得当前时间的值,并将其表示为双精度,以便对该值执行操作等

目前,它看起来是这样的:

public void addAnimationListener()
{
    animation.getTimeline().currentTimeProperty().addListener(new ChangeListener(){
        @Override
        public void changed(ObservableValue arg0, Object arg1, Object arg2) {
            //double curPercentageValue = arg0.getValue(); //My attempt at trying to get the value to be a double. I tried casting it and such...
            System.out.println(arg0.getValue());
        }

    });
}
T它打印出来的值是,例如:

128.33334毫秒

…所以我可以只执行
字符串
操作来删除
“ms”
,然后使用
Double.parseDouble()
将其转换为所需的数据类型…但是有更好的方法吗?直接得到值的那个


提前感谢您的帮助

如果正确键入泛型类型(不要忽略编译器/IDE警告),这些事情总是比较容易弄清楚的:

publicstaticvoid addAnimationListener()
{
animation.getTimeline().currentTimeProperty().addListener(新的ChangeListener()){
@凌驾

public void changed(可观察性)这正是我所需要的@James_D。对不起,我对实现这些东西还很陌生,所以我甚至没有想到我可以更改泛型类型。它现在正如我所希望的那样工作。尊敬的Ben。
public static void addAnimationListener()
{
    animation.getTimeline().currentTimeProperty().addListener(new ChangeListener<Duration>(){
        @Override
        public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) {
            double millis = newValue.toMillis();
            System.out.println(millis + " ms");
        }

    });
}