小编Joe*_*Day的帖子

如何在没有监听器的情况下获取javafx媒体元数据

所以我一直在寻找这个一周,并且阅读虽然每个问题都很相似,但似乎没有人像我一样问同样的问题(尝试逆向工程其他解决方案类似于我想要的但没有成功.

解释了穴居人风格:我正在尝试使用元数据创建列表.

  1. 我用多个对话框打开并选择多个mp3
  2. 我把文件放在一个 ArrayList<File>
  3. 我循环使用增强的for循环文件,并使用媒体变量提取元数据
  4. 例如,我想要保存在ArrayList中的元数据信息(如"artist")

问题是,只有在增强循环完成后,侦听器才会起作用,导致 ArrayList<String>一个对象中没有任何内容

这是一个示例:

ArrayList<String> al;
String path;
public void open(){
    files=chooser.showOpenMultipleDialog(new Stage());
    for( File f:files){             
        path=f.getPath();
        Media media = new Media("file:/"+path.replace("\\", "/").replace(" ", "%20"));
        al= new ArrayList<String>();
        media.getMetadata().addListener(new MapChangeListener<String, Object>() {                 
            public void onChanged(Change<? extends String, ? extends Object> change) {
                if (change.wasAdded()) {
                    if (change.getKey().equals("artist")) {
                        al.add((String) change.getValueAdded());
                     }
                }
            }
        });
    }//close for loop
    //then i want to see the size of al like this
    system.out.println(al.size());
    //then it returns 1 …
Run Code Online (Sandbox Code Playgroud)

media javafx listener

5
推荐指数
1
解决办法
3388
查看次数

标签 统计

javafx ×1

listener ×1

media ×1