2014-04-01 103 views
0

我有一个简单的媒体播放器,并且在需要检索媒体元数据的其中一个类中。到目前为止,我已经成功地提取了元数据,但是当我尝试使用这些值时,返回的字符串是空白的。字符串的更改值

String album = "", artist = "", title = "", year = ""; 
... 
public void addListItems(final Pane layout, final Stage stage, final Scene scene) { 

if (list != null) { 
    for (final String s : list) { 
    final String[] sList = s.split("\\\\"); 
    Media media; 
    try { 
     media = new Media(new File(s).toURI().toURL().toString()); 
     media.getMetadata().addListener(new MapChangeListener<String, Object>() { 
     public void onChanged(Change<? extends String, ? extends Object> arg0) { 
      handleMetadata(arg0.getKey(), arg0.getValueAdded()); 
     } 
     }); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 
    lab = new Button(album + sList[sList.length-1]); 
    layout.getChildren().add(lab); 
    lab.setPrefWidth(scene.getWidth()); 
    lab.setAlignment(Pos.CENTER_LEFT); 
    lab.setStyle("-fx-border-color: black"); 
    lab.setStyle("-fx-backgound-color: lightgray"); 
    lab.setTooltip(new Tooltip(lab.getText())); 
    lab.setOnMouseClicked(new EventHandler<MouseEvent>() { 
     public void handle(MouseEvent arg0) { 
     try { 
      AudioBitsMediaPlayer.mediaPlayer = AudioBitsMediaPlayer.buildMediaPlayer(s, AudioBitsMediaPlayer.status, AudioBitsMediaPlayer.timeStatus); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 
     AudioBitsMediaPlayer.currentDir = new File(new File(s).getParentFile().getAbsolutePath()); 
     AudioBitsMediaPlayer.status.setText("Audio File"); 
     stage.close(); 
     } 
    }); 
    scene.heightProperty().addListener(new ChangeListener<Number>() { 
     public void changed(ObservableValue<? extends Number> arg0, Number arg1, Number arg2) { 
     lab.setPrefWidth(scene.getWidth()); 
     layout.setPrefHeight(scene.getHeight()); 
     } 
    }); 
    } 
}  
} 
... 
public void handleMetadata(String key, Object value) { 
    if (key.equals("album")) { 
     album = value.toString(); //Here album returns as value.toString() correctly 
    } else if (key.equals("artist")) { 
     artist = value.toString(); 
    } else if (key.equals("title")) { 
     title = value.toString(); 
    } else if (key.equals("year")) { 
     year = value.toString(); 
    } 
    } 

我已经完成了关于这个主题的研究,但是我查看的结果并没有帮助我的情况。我非常感谢任何帮助。

+0

可能是艺术家=(字符串)值可能发生;作品?? – HCarrasko

+0

谢谢,但这是value.toString()的等价物。它没有区别 – fmi11

+0

你可以尝试做调试值吗?它包含的东西? –

回答

0

请尝试这样做:

artist = (String) value; 
title = (String) value; 
year = (String) value; 
+0

我刚刚试过后询问。它没有任何区别。 – fmi11

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 –

+0

好的,谢谢@KevinPanko – HCarrasko

0
  • 你应该使用String.valueOf(value),因为这将 工作就算值是整数或其他任何东西。
  • value.toString(),您将需要检查是否值否则返回null会抛出NullPointerException
  • 同当u试图投(String) value;
+0

谢谢你的回应,但它仍然返回“”。 – fmi11