Я изучаю, как использовать JavaFx, и я пытаюсь создать медиаплеер с двумя сценами, где один воспроизводит видео, а другой играет музыку. Я сейчас работаю над видеосценой и не могу понять, почему мой код не работает.Как воспроизвести медиа в стеке в Javafx?
public class MediaApp extends Application {
Media video_source;
MediaPlayer video_mp;
MediaView video_mv;
@Override
public void start(Stage primaryStage) {
Pane root1 = new Pane();
BorderPane videoPane = new BorderPane();
Scene vidScene = new Scene(videoPane, 1280, 800);
Scene mainScene = new Scene(root1, 1280, 800);
MenuBar video_menuBar = new MenuBar();
Menu video_menuFile = new Menu("File");
MenuItem video_open = new MenuItem("Open File...");
video_open.setOnAction((ActionEvent t) -> {
File file = new FileChooser().showOpenDialog(primaryStage);
if (file != null) {
video_source = new Media(file.toURI().toString());
video_mv = new MediaView(video_mp);
}
});
video_menuFile.getItems().addAll(video_open);
Menu video_menuEdit = new Menu("Edit");
Menu video_menuView = new Menu("View");
MenuItem mainPage = new MenuItem("Main Menu");
mainPage.setOnAction(e -> primaryStage.setScene(mainScene));
video_menuView.getItems().add(mainPage);
video_menuBar.getMenus().addAll(video_menuFile, video_menuEdit, video_menuView);
video_menuBar.prefWidthProperty().bind(videoPane.widthProperty());
videoPane.setTop(video_menuBar);
StackPane stack = new StackPane();
stack.getChildren().addAll(new Rectangle(1000, 600, Color.BLACK), video_mv);
videoPane.setCenter(stack);
video_mp.play();
primaryStage.setScene(mainScene);
primaryStage.setTitle("Media Player");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Я также хотел бы отметить, что я хочу, чтобы черный прямоугольник присутствовал даже при отсутствии воспроизведения видео.
Что означает «это не работает»? Что происходит? Отсканированный фрагмент не будет компилироваться, поэтому нет никаких шансов, чтобы кто-нибудь догадался, что может быть неправильным. –
@James_D Я продолжаю получать исключение Runtime и исключение NullPointerException. Все, что мне нужно знать, - как воспроизвести видео в области, которая меньше моего экрана? – user3656280
@ user3656280 Итак, вы попробовали мое предложение? – Enigo