0

YouTubeビデオを開くためにメディアプレーヤーをFXMLに埋め込む方法を知っている人はいますか?

私はこれを書きました:

<?import javafx....>
<?import javafx.scene.media.Media?>
<?import javafx.scene.media.MediaPlayer?>
<?import javafx.scene.media.MediaView?>

<AnchorPane prefHeight="600" VBox.vgrow="ALWAYS">
  <children>
    <VBox spacing="50" alignment="CENTER" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
      <padding>
        <Insets top="30" right="30" bottom="0" left="30"/>
      </padding>
      <children>
        <MediaView>
          <MediaPlayer autoPlay="true">
            <Media source="http://www.youtube.com/watch?v=rCw5JXD18y4" />
          </MediaPlayer>
        </MediaView>
      </children>
    </VBox>
  </children>
</AnchorPane>

しかし、「メディア」が宣言されている行でこの例外が発生しています:

Element does not define a default property.
   at javafx.fxml.FXMLLoader$Element.set(FXMLLoader.java:142)
   at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:611)
   at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2430)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2136)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2028)
   at javafx.fxml.FXMLLoader$IncludeElement.constructValue(FXMLLoader.java:937)
   at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:567)
   at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2314)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2131)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2028)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2742)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2721)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2707)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2694)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2683)
   ...  

誰 ?

皆さん、ありがとうございました !

4

2 に答える 2

2

AFAIK YouTubeは、著作権上の理由から彼の動画をストリーミングすることを許可していません。

1.ただし、JavaFXのWebViewにYouTubeビデオを埋め込むことができます。

public class WebViewYouTube extends Application {
    @Override
    public void start(Stage stage) {
        StackPane root = new StackPane();
        WebView webView = new WebView();

        final WebEngine webEngine = webView.getEngine();
        root.getChildren().addAll(webView);
        stage.setScene(new Scene(root, 450, 350));

        webEngine.loadContent("<iframe width='420' height='315' src='http://www.youtube.com/embed/ZDzVLhjB3bk' frameborder='0' allowfullscreen></iframe>");

        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }
}

2. FXMLからWebEngineのコンテンツを設定する方法がわからないため、残念ながらFXMLでも同じことがコントローラーを使用する必要があります。

<StackPane xmlns:fx="http://javafx.com/fxml" fx:controller="fxdemo.SampleController">
  <children>
    <WebView fx:id="webView"/>
  </children>
</StackPane>

およびコントローラー:

public class SampleController implements Initializable {

    @FXML //  fx:id="webView"
    private WebView webView; // Value injected by FXMLLoader


    @Override // This method is called by the FXMLLoader when initialization is complete
    public void initialize(URL fxmlFileLocation, ResourceBundle resources) {
        webView.getEngine().loadContent("<iframe width='420' height='315' src='http://www.youtube.com/embed/ZDzVLhjB3bk' />");
    }

}
于 2012-08-28T12:19:52.317 に答える