我有一个MediaPlayer
对象正在播放视频。视频播放完后,我希望程序隐藏MediaView
并显示不同的JavaFx实体。但是,当我调用player.play()
时,程序会立即解释后面的代码行,导致MediaView
根本看不到。
public class Level1Controller implements Initializable {
File file = new File("ngnl.mp4");
Media media = new Media(file.toURI().toString());
MediaPlayer player = new MediaPlayer(media);
@FXML
MediaView view = new MediaView();
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
view.setMediaPlayer(player);
player.play();
view.setVisible(false);
}
}
更多按钮,并且这些按钮将位于JavaFx层次结构中的MediaView
之下,因此,将其隐藏时,将看到底层的内容。
答案 0 :(得分:1)
找不到任何提及此问题的官方文档,但是我敢肯定,JavaFX将在媒体文件的后台在单独的线程上播放媒体文件,以便不会阻塞UI线程。这就是为什么您需要使用MediaPlayer.setOnEndOfMedia:
view.setMediaPlayer(player);
player.setOnEndOfMedia(() -> {
view.setVisible(false);
});
player.play();