簡體   English   中英

完成我的開始后,如何刪除我的聽眾? (JAVA)

[英]How do I remove my listener after finishing what I started? (JAVA)

我正在用JavaFX創建媒體播放器。 在我的一種方法中,我創建了一種在媒體文件中搜索元數據,然后在ImageView中顯示元數據的方法。 第一次工作正常,但一旦我想使用另一個Media對象再次調用它,圖像就不會顯示。 我有點困惑和缺乏經驗,但是我認為也許我需要在進入下一個對象之前重置/停止偵聽器?

所以我的問題是! 找到“圖像”后,如何刪除偵聽器,如何鍵入以使其發生?

如果您認為第二次無法顯示我的圖片還有其他原因,請也告訴我。

特此感謝。

private void displayAlbumCover (){

    // Will start to show a blank CD
    File file = new File("src/sample/images/blank_cd.jpeg");

    Image image = new Image(file.toURI().toString());

    albumCoverView.setImage(image);


    // However if an album cover is found in the meta-data it will be displayed
    ObservableMap<String,Object> meta_data=me.getMetadata();

    meta_data.addListener((MapChangeListener<String, Object>) ch -> {



        if(ch.wasAdded()){

            String key=ch.getKey();

            Object value=ch.getValueAdded();


            switch(key){
                case "image":
                    albumCoverView.setImage((Image)value);


                    break;
            }
        }
    });



}

ObservableMap具有removeListner方法。 您可以將偵聽器實例保留為變量,然后將其刪除。

private MapChangeListener<String, Object> listener;

private void displayAlbumCover (){
    // ...

    this.listener = //...
    meta_data.addListener(listener);
}

private void removeListener() {
  me.getMetadata().removeListener(this.listener);
}

https://docs.oracle.com/javase/8/javafx/api/javafx/collections/ObservableMap.html#removeListener-javafx.collections.MapChangeListener-

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM