###前提・実現したいこと
通常のGUIクラスでは、基本的にGUIクラスが視点になってプログラムが動いていくことと思います。
GUIクラスが画面にボタンを配置し、GUIクラスが受け取った値を、計算するメソッドを持つクラスに投げて、
計算結果をGUIクラスが受け取り、その値によって、画面の表示を変更する
といった具合に。
GUIクラスが主人公で進んでいくような感じだと思います。
しかし、そうではなく、計算するメソッドを持つ側のクラスが主人公になって進むような
プログラムの書き方はできないでしょうか?
メインラインはGUIとは全く関係のないクラスで進み、ユーザとの情報のやり取りがしたいときに
GUIクラスの応じたメソッドを呼び出すことで画面を変化させる
というように。
通常の、
java
1import javafx.application.Application; 2import javafx.stage.*; 3import javafx.scene.*; 4import javafx.scene.control.*; 5 6public class HelloWorld extends Application{ 7 8 @Override 9 public void start(Stage stage){ 10 Label label = new Label("HelloWorld!!"); 11 stage.setScene(new Scene(label)); 12 stage.show(); 13 } 14}
このようなJavaFXプログラムだと、コマンドプロンプトで実行する際は
java HelloWorld
というようにすると思います。
しかしこれはGUIクラス視点です。
java
1public class Main{ 2 public static void main(String[] args){ 3 4 //とりあえず初期画面表示 5 //helloworldって画面いっぱいに表示しておく感じで。 6 7 //画面上のどこかをクリックされたら、クリックされた座標のx座標とy座標を足す 8 int z = x + y; 9 10 //zをデータベースに登録する 11 12 //次はaかbを選択してほしいので、画面にaとbという名前のボタン2つを配置させる。 13 14 //aならばz*2を、bならばz/2をデータベースに新たに登録する 15 } 16}
例えば上記のようなプログラムを作りたかったとします。
これをコマンドプロンプトで実行するときは、もちろんjava Mainです。
データベース登録処理とかは今回はどうでもいいのですが、
このような、GUI表示とは関係ない処理はMainクラスに書いて、
且つメインクラス視点で物事が進んでいくようにプログラムを書きたいです。
どうやって書いたらいいでしょうか?
アドバイスなどいただけましたら幸いです。
どうかよろしくお願いいたします
###追記
回答してくださった方のお話を参考に、初心者なりに色々と考えてみました。
Mainクラスと、JavaFXクラスを別スレッドにして、
例えば、ボタンが押されるのを待っている状態ならば、
JavaFXクラスではボタンを表示しておいて、ボタンが押されたら特定の変数が変化するようにしておいて、
Mainクラスでは、特定の変数が変化するまで、Whileループで待っているという状態にしたら、
目的の動作は得られるのでしょうか?
マルチスレッドにしないと、Mainクラスがwhileループに入った段階で、その処理につきっきりになるのか、GUIのボタンを押すことができなくなってしまいました。
このやり方で、達成できるのか、それと問題があるのかどうかを教えてください
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/02 06:09
2017/12/02 07:05