首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅播放音频的javafx媒体视图

仅播放音频的javafx媒体视图
EN

Stack Overflow用户
提问于 2015-09-27 14:55:15
回答 1查看 2K关注 0票数 0

我正在尝试将网站中的视频嵌入到一个简单javafx应用程序的媒体视图中。我有一个样例代码,我用它作为我的javafx代码。它打开场景并播放音频,但不会播放视频。怎样才能让它播放音频呢?我正在使用netbeans IDE 8.0.2,JavaFx 8和scene builder 2.0,下面是我尝试过的代码。在进阶阶段谢谢。

代码语言:javascript
复制
@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());
        }
    });
}   

这就是我把孩子们加载到舞台上的方式

代码语言:javascript
复制
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如下所示

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

发布于 2015-09-28 14:06:34

您正在重新初始化已由FXMLoader初始化的MediaView。千万不要这样做,因为这样会丢失对原始节点的引用。

您应该只将MediaPlayer设置为MediaView,而不是使用setMediaPlayer()重新初始化它。

代码语言:javascript
复制
@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();
} 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32805362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档