2012-08-30 65 views
0

我正在嘗試編碼Vaadin中的音樂播放器。我正在使用其內置的音頻組件。更改Vaadin中的音頻源

我想要這樣工作的方式是我在樹中選擇一個文件並播放該音頻文件。

我設置了正確的源文件在我的樹管理:

Tree tree = new Tree(); 
    FilesystemContainer container = new FilesystemContainer(file); 
    tree.setContainerDataSource(container); 
    tree.setImmediate(true); 
    mainWindow.addComponent(tree); 

tree.addListener(new Property.ValueChangeListener() { 

     @Override 
     public void valueChange(ValueChangeEvent event) { 

      System.out.println(event); 
      File file = (File) event.getProperty().getValue(); 
      FileResource resource = new FileResource(file, application); 
      audio.setSource(resource); 
      audio.pause(); 
      audio.requestRepaint(); 
     } 
    }); 

但是,我必須手動刷新頁面這個工作。如何讓音頻組件在不刷新頁面的情況下獲取新源?

回答

0

聽起來像HTML5音頻元素或瀏覽器的限制。

作爲解決方法,您可以嘗試刪除並添加新的音頻組件。這是非常輕量級的操作,不應引起額外的開銷。

+0

我剛試過這個,不起作用。 – Nefron

+0

對不起,我稍微改進了解決方法。我在這裏看到的重要一點是,DOM樹實際上發生了變化,我不確定重新添加(相同)組件是否真的這樣做。創建一個新的音頻組件絕對是這樣做的。如果還沒有,請嘗試一下。至少應該這樣,它會告訴你一些關於原因的信息。 – eeq