【问题标题】:How to remove invalidation listener如何删除失效监听器
【发布时间】:2020-01-27 19:03:38
【问题描述】:

我正在制作一个音乐应用程序,它在底部有一个滑块。为了解决由于某种原因监听器不活动的另一个问题,我必须这样做,以便在事件发生时添加监听器,因为没有其他地方可以添加它。如何从一个对象中删除一个失效监听器,然后再添加一个,这样我就没有大量的失效监听器了?

监听器看起来像这样:

someMediaPlayer.currentTimeProperty().addListener(new InvalidationListener() 
            {
                public void invalidated(Observable ov) {

                    someMethod();

                }
            });

【问题讨论】:

标签: java javafx listener invalidation


【解决方案1】:

使用您发布的代码,您将永远无法删除它,因为您不存储参考。每次调用new InvalidationListener() 时,您都会得到一个新的参考。而是存储该 InvalidationListener 对象,然后您可以将其删除。

InvalidationListener listener = new InvalidationListener() 
        {
            public void invalidated(Observable ov) {

                someMethod();

            }
        };
someMediaPlayer.currentTimeProperty().addListener(listener);
....
someMediaPlayer.currentTimeProperty().removeListener(listener);

【讨论】:

    猜你喜欢
    • 2016-01-23
    • 2014-02-17
    • 2019-02-05
    • 2013-06-18
    • 2021-01-11
    • 2019-01-30
    • 2015-02-27
    • 1970-01-01
    • 2017-01-16
    相关资源
    最近更新 更多