前提・実現したいこと
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。