我试图将网站中的视频嵌入到简单的javafx应用程序的媒体视图中。我有一个示例代码,我用作我的javafx代码。它打开场景并播放音频但不播放视频。如何让它播放音频?我使用netbeans IDE 8.0.2,JavaFx 8和场景构建器2.0 我试过的Code是下面的。 Thanx in advanced。
@FXML MediaView mdv;
Media media;
public static MediaPlayer mpl;
@Override
public void initialize(URL url, ResourceBundle rb) {
media=new Media("http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv");
mpl=new MediaPlayer(media);
mpl.setAutoPlay(true);
mdv=new MediaView(mpl);
mpl.play();
mpl.setOnError(new Runnable() {
@Override public void run() {
System.out.println("Current Error: " + mpl.getError());
}
});
}
这就是我将孩子们加载到舞台上的方式
public class Production extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Vdo.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
从场景构建器创建GUI后得到的FXML位于
之下<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.media.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0"
xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="production.VdoController">
<children>
<MediaView fx:id="mdv" fitHeight="300.0" fitWidth="300.0" layoutX="125.0" layoutY="85.0" />
<Button layoutX="235.0" layoutY="51.0" mnemonicParsing="false" text="Button" />
</children>
</AnchorPane>
答案 0 :(得分:3)
您正在重新初始化已由FXMLoader
初始化的MediaView。永远不要这样做,因为你将失去对原始节点的引用。
您应该将MediaPlayer设置为MediaView,而不是使用setMediaPlayer()重新初始化它。
@Override
public void initialize(URL url, ResourceBundle rb) {
media=new Media("http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv");
mpl=new MediaPlayer(media);
mpl.setAutoPlay(true);
mdv.setMediaPlayer(mpl);
mpl.play();
}