質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Q&A

解決済

1回答

967閲覧

複数windowを作ってプログラムを実行できるようにしたいです.

sostugyou

総合スコア5

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

0グッド

0クリップ

投稿2020/01/17 07:11

前提・実現したいこと

javaを使って簡単なクイズゲームを作成しています.問題に回答して「次へ」ボタンを押すと,次の問題画面に遷移します.問題の間に動画を表示させたいのですが上手く組み込めません.(問題1→次へボタン→動画再生のクラス参照→問題2の画面)という流れを作りたいです.

発生している問題・エラーメッセージ

動画再生とクイズのプログラムはそれぞれ個別に動きます.
また,動画クラスにsysout文を入れて確認したところ,クラスの参照自体はできていました.

考えられる原因としては,実行画面のwindowがクイズ画面と動画画面で取り合いになっているのではないかと思います.
次へボタンを押した時に,別windowで動画を再生できればいいのですが...

エラーメッセージ

該当のソースコード

javaFX
ソースコード

クイズ画面(main)

start.setOnAction(e -> { //次へボタンを押す g.start(stage); //ここでmovieクラスの実行 new JavaQuizView(); stage.hide(); random_no = RandomNumbers.randomFunction(); });

movieクラス

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

public class movie extends Application {
Group root = new Group();
Media media;
MediaPlayer mediaPlayer;
MediaView mediaView;

@Override public void start(Stage stage) {
System.out.println("abc");
stage.show(); // ウィンドウを表示する

File file = new File("/Users/minoginji/Downloads/sample2.mp4"); // 動画ファイルを読み込む media = new Media(file.toURI().toString()); mediaPlayer = new MediaPlayer(media); mediaView = new MediaView(mediaPlayer); root.getChildren().add(mediaView); // MediaViewを追加 mediaPlayer.setOnReady(() -> { // 動画が読み込めたら int width, height; width = media.getWidth(); // 動画の幅を取得 height = media.getHeight(); // 動画の高さを取得 mediaView.setFitWidth(600); // 幅を600に設定 mediaView.setFitHeight(height * 600 / width); // 高さを調整 mediaPlayer.play(); // 動画を再生 Scene scene = new Scene(root, mediaView.getFitWidth(), mediaView.getFitHeight() + 30); // ウィンドウサイズを指定 stage.setScene(scene); // Sceneを設定 });

}
}

試したこと

ネットで調べてmovieクラスに複数windowを作るようなことをして見たのですが上手くいかないです...

補足情報(FW/ツールのバージョンなど)

初投稿で説明がかなり分かりにくく申し訳ございません.どうぞよろしくお願いします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

子画面(動画)をどうやって表示するのか、という疑問だと認識しました。
ということで、子画面を開くサンプル。

java

1import javafx.application.Application; 2import javafx.application.Platform; 3import javafx.scene.Scene; 4import javafx.scene.control.Button; 5import javafx.scene.control.Label; 6import javafx.scene.control.ProgressIndicator; 7import javafx.scene.layout.HBox; 8import javafx.scene.layout.VBox; 9import javafx.stage.Stage; 10import javafx.stage.StageStyle; 11import java.time.LocalDateTime; 12 13public class Main { 14 public static void main(String[] args) { 15 Application.launch(MainWindow.class, args); 16 } 17 18 public static class MainWindow extends Application { 19 @Override 20 public void start(Stage stage) throws Exception { 21 final Button nextButton = new Button("next"); 22 nextButton.setOnAction(ev -> { 23 Platform.runLater(() -> { 24 new SubWindow().show(); 25 }); 26 }); 27 final Button exitButton = new Button("exit"); 28 exitButton.setOnAction(ev -> System.exit(0)); 29 stage.setScene(new Scene( 30 new VBox( 31 new Label(this.getClass().getName()), 32 new Label(LocalDateTime.now().toString()), 33 new HBox( 34 nextButton, 35 exitButton)))); 36 stage.show(); 37 } 38 } 39 40 public static class SubWindow extends Stage { 41 public SubWindow() { 42 super(StageStyle.DECORATED); 43 final Button exitButton = new Button("close"); 44 exitButton.setOnAction(ev -> SubWindow.this.hide()); 45 this.setScene(new Scene( 46 new VBox( 47 new Label(this.getClass().getName()), 48 new Label(LocalDateTime.now().toString()), 49 new ProgressIndicator(), 50 exitButton))); 51 } 52 } 53}

投稿2020/01/17 13:56

shiketa

総合スコア3971

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sostugyou

2020/01/18 04:01

早々のお返事ありがとうございます!! 参考にさせて頂きます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問