[英]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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.