java - 切换 MediaView 不起作用

标签 java javafx

为什么这段代码不起作用,有人可以给我一个解决方案吗?

播放第一部电影效果很好,但单击按钮后我丢失了MediaView并且无法播放下一个视频。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;


public class VideoTest extends Application{

    private MediaPlayer player;
    private MediaView view;

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

    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        HBox box = new HBox();
        player = new MediaPlayer(new Media("file:///C:/path/to/file"));
        view = new MediaView();
        view.setMediaPlayer(player);
        player.play();

        Button button = new Button("Next");
        button.setOnAction(e->{
            player.stop();
            player = new MediaPlayer(new Media("file:///C:/path/to/file"));
            view = new MediaView(player);
            player.play();
        });

        box.getChildren().addAll(view,button);
        Scene scene = new Scene(box,700,500);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}

最佳答案

您永远不会向场景添加新的媒体 View ,因此您永远不会看到它。

无需创建新的媒体 View ,只需将新播放器设置到现有媒体 View (您已将其附加到场景中)即可。

button.setOnAction(e->{
    player.stop();
    player = new MediaPlayer(new Media("http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv"));
    view.setMediaPlayer(player);
    player.play();
});

关于java - 切换 MediaView 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25816685/

相关文章:

java - 无法使用 java 加载 xml,因为我需要它(初学者)

将列表列表传递给 Map 值时,Map 中的 Java 嵌套列表返回错误

javafx - 如何创建带有 "Do not ask again"复选框的 JavaFX 警报?

java - 如何使覆盖 Vbox 节点可点击?

java - 无法找到 JavaFX 的 fxml 错误

java - 让 JPanel 变得更大

java - 列表的范围和生命周期

java - 服务器 : Null java. sql.SQLException 参数索引超出范围(1 > 参数数量,为 0)

java - hibernate 映射: using same object multiple times

css - 设置图像的背景半径