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

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

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

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

デザインパターン

デザインパターンは、ソフトウェアのデザインでよく起きる問題に対して、解決策をノウハウとして蓄積し再利用出来るようにした設計パターンを指します。

Q&A

解決済

2回答

1094閲覧

途中から画面(javafx)を表示するプログラムを作りたい

kk0319

総合スコア5

JavaFX

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

デザインパターン

デザインパターンは、ソフトウェアのデザインでよく起きる問題に対して、解決策をノウハウとして蓄積し再利用出来るようにした設計パターンを指します。

0グッド

0クリップ

投稿2019/12/01 08:14

編集2019/12/01 08:16

前提・実現したいこと

Observerパターンのサンプルプログラムを作成中です。
通知を受け取った複数のObserverクラスによって、文字が表示される(画面なし)、グラフが表示される(画面あり、javafx)、など、動作がかわります。
これまでswingで作成していたのですが、javafxに書き直して動作させたいと思っています。

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

実現方法がわかりません。
上の例でいう、グラフが表示されるクラス(javafx)は、Applicationを継承したクラスとして作成するのでしょうか。swingではFrameクラスを継承することで実現していました。

該当のソースコード

java

1public class Main { 2 public static void main(String[] args) { 3 4 //対象者のインスタンス作成 5 RandomNumberGenerator generator = new RandomNumberGenerator(); 6 //観測者のインスタンス生成 7 Observer observer1 = new DigitObserver(); 8 Observer observer2 = new GraphObserver(); //これをjavafxで作成したい 9 //観測者を登録 10 generator.addObserver(observer1); 11 generator.addObserver(observer2); 12 //観測者、行動開始 13 generator.execute(); 14 } 15} 16------------------------ 17import javafx.application.Application; 18//省略 19//Aoolicationを継承し、Observerを実装 20public class GraphObserver extends Application implements Observer { 21 public void update(NumberGenerator generator) { 22 System.out.println("【通知】HELLO:" + generator.getNumber()); 23 24 } 25 public void start(Stage stage) { 26 //省略、グラフ作成 27 stage.setScene(new Scene(g)); 28 stage.show(); 29 } 30 } 31------------------------ 32public interface Observer { 33 public abstract void update(NumberGenerator generator); 34} 35------------------------ 36対象者側(RandomNumberGenerator)は省略します。

試したこと

上記は実行できますが、画面は出ません。
「通知HELLO」は表示します。
launch()の呼び出し?ができるのか、よくわかりません。

Application.launch(HelloJavaFX.class, args);
をnewのあとに書いてみると、画面はでますが、制御が止まって動かなくなります。
画面を閉じると、動きます。

同じような質問をみかけましたが、解決できるのかはわかりませんでした。
どうぞよろしくお願いします。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

Applicationを継承せずに、Stageのインスタンスを生成することでうまくいきました。
ありがとうございました。

投稿2019/12/08 08:22

kk0319

総合スコア5

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

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

0

ベストアンサー

グラフが表示されるクラス(javafx)は、Applicationを継承したクラスとして作成するのでしょうか。

先ずは javafx で HelloWorld してみては如何でしょうか.

投稿2019/12/02 18:34

jimbe

総合スコア12632

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問